|
|

楼主 |
发表于 2005-10-20 20:55:00
|
显示全部楼层
Re:一个D3D做的金子塔,希望初学者能思考如何做的。
程序中 CUSTOMVERTEX modelDef[]这个 全局数组定义了金子塔的面。
因为 只有五个面。所以 5个顶点就搞定。
这个WORD indices[] 则 负责如何连接各个顶点
函数HRESULT InitGeometry()是个自定义的函数,这里主要负责绘制几何图形,如果不用手工绘制则 也在这里处理Mesh
关键的地方是这段
g_pd3dDevice->CreateIndexBuffer( sizeof(WORD) * num_elems,
D3DUSAGE_WRITEONLY,
D3DFMT_INDEX16,
D3DPOOL_DEFAULT,
&pIndexBuffer );
WORD *pIndex;
pIndexBuffer->Lock(0, 0, (BYTE **)&pIndex, 0);
for(idx = 0; idx < num_elems; idx++){
pIndex[idx] = indices[idx];
}
pIndexBuffer->Unlock();
g_pd3dDevice->SetIndices(pIndexBuffer, 0);
通过创建一个索引缓冲区来 设置索引,只有这样设置了,才能让前面的 indices发挥作用。
当我们会了读取Mesh后就不必这样费劲的手工连接了。 |
|