directx中第四卷
来源:互联网 发布:野蛮时代 知乎 编辑:程序博客网 时间:2024/04/29 16:31
渐进网格
声明变量
ID3DXPMesh* PMesh = 0;
产生渐进网格
加载模型hr = SourceMesh->OptimizeInplace( D3DXMESHOPT_ATTRSORT| D3DXMESHOPT_COMPACT| D3DXMESHOPT_VERTEXCACHE, (DWORD*)adjbuffer->GetBufferPointer(), (DWORD*)adjbuffer->GetBufferPointer(), //添加上优化后的邻接数组指针 0,0 );if (FAILED(hr)){ ::MessageBox(0, "OptimizeInplace-lost", 0, 0); return false;}//由原网格生成渐进网格(网格指针,优化前的邻接数组指针,默认顶点属性权重,默认顶点权重,尽可能简化,简化面数,把结果存到网格指针)hr = D3DXGeneratePMesh( SourceMesh, (DWORD*)adjbuffer->GetBufferPointer(), 0,0,1, D3DXMESHSIMP_FACE, &PMesh );if (FAILED(hr)){ ::MessageBox(0, "D3DXGeneratePMesh-lost", 0, 0); return false;}adjbuffer->Release();//得到最大细节DWORD maxfaces = PMesh->GetMaxFaces();//设置细节PMesh->SetNumFaces(maxfaces);
绘制模型
for (int i = 0; i < Mtrls.size(); i++){ g_pd3dDevice->SetMaterial(&Mtrls[i]); g_pd3dDevice->SetTexture(0, Textures[i]); PMesh->DrawSubset(i); //绘制网格骨架,为了看到效果 g_pd3dDevice->SetMaterial(&yellow_mtrl); g_pd3dDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME); PMesh->DrawSubset(i); g_pd3dDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);}
调整效果
int numfaces = PMesh->GetNumFaces();if (::GetAsyncKeyState('A')&0x8000f){ PMesh->SetNumFaces(numfaces + 10);}if (::GetAsyncKeyState('S')&0x8000f){ PMesh->SetNumFaces(numfaces - 10);}
效果
0 0
- directx中第四卷
- directx初第四卷
- directx中第一卷
- directx中第二卷
- directx中第三卷
- directx中第五卷
- directx初第一卷
- directx初第二卷
- directx初第三卷
- directx初第五卷
- directx初第六卷
- directx初第七卷
- directx初第八卷
- directx初第九卷
- directx初第十卷
- directx初第十二卷
- directx初第十三卷
- Managed DirectX 第四章
- 1029. Median (25)
- 线上环境部署问题
- MyBatis发布到内网服务器上后的UnKnownHostException问题
- java安全架构____java SHA加密
- RMQ
- directx中第四卷
- 数据结构及算法 2-复习java
- javascript DOM编程艺术 读后感与笔记
- C++Primer第五版 第十章习题答案(21~30)
- SPOJ FACVSPOW(数论+二分)
- Unity--简单Buff系统
- [AHK]点击记事本的关闭按钮时最小化窗口
- 关于FineCMS伪静态的一些问题
- 【BZOJ 1977】[BeiJing2010组队]次小生成树 Tree