|
|
发表于 2007-5-10 11:02:00
|
显示全部楼层
Re: 问个问题,DX里面怎么在已知一组顶点数据的情况下创
//假设你创建好的vertex指针是vertices,vertex顺序是从上到下,从左到右
hr = D3DXCreateMeshFVF((map_width - 1) * (map_height - 1) * 2,//这么多个面
map_width* map_height, //一共这么多个顶点
D3DXMESH_WRITEONLY | D3DXMESH_32BIT,
D3DFVF_CUSTOMVERTEX,
g_pd3dDevice,&m_pMesh);
void* pVertex;
m_pMesh->LockVertexBuffer(0,(void**)(&pVertex));
memcpy(pVertex,vertices,sizeof(CUSTOMVERTEX) * numVertices);
m_pMesh->UnlockVertexBuffer();
/*create index buffer*/
//WORD iIndex[(map_height - 1) * (map_width - 1) * 2 * 3];
WORD* iIndex = new WORD[(map_height - 1) * (map_width - 1) * 2 * 3];
int n = 0;
int count = 0;
for(y = 0; y < map_height - 1; y ++)
for(x = 0; x <map_width - 1; x ++)
{
int idx= y * map_width * 6 + x * 6 + 0;
iIndex[y * (map_width - 1) * 6 + x * 6 + 0] = (WORD)(y* map_width + x);
iIndex[y * (map_width - 1) * 6 + x * 6 + 1] = (WORD)((y+1)* map_width + x );
iIndex[y * (map_width - 1) * 6 + x * 6 + 2] = (WORD)(y* map_width + x + 1);
iIndex[y * (map_width - 1) * 6 + x * 6 + 3] = (WORD)((y+1)* map_width + x);
iIndex[y * (map_width - 1) * 6 + x * 6 + 4] = (WORD)((y+1)* map_width + x + 1);
iIndex[y * (map_width - 1) * 6 + x * 6 + 5] = (WORD)(y* map_width + x + 1);
n += 6;
count ++;
}
void* ppbData;
m_pMesh->LockIndexBuffer(0,(void**)&ppbData);
memcpy(ppbData,iIndex,sizeof(WORD) * n);
m_pMesh->UnlockIndexBuffer(); |
|