|
以下是锁定索引:
DWORD * i=0;
_mesh->LockIndexBuffer(0,(void**)&i);
// fill in the front face index data
i[0] = 0; i[1] = 1; i[2] = 2;
i[3] = 0; i[4] = 2; i[5] = 3;
// fill in the back face index data
i[6] = 4; i[7] = 5; i[8] = 6;
i[9] = 4; i[10] = 6; i[11] = 7;
// fill in the top face index data
i[12] = 8; i[13] = 9; i[14] = 10;
i[15] = 8; i[16] = 10; i[17] = 11;
// fill in the bottom face index data
i[18] = 12; i[19] = 13; i[20] = 14;
i[21] = 12; i[22] = 14; i[23] = 15;
// fill in the left face index data
i[24] = 16; i[25] = 17; i[26] = 18;
i[27] = 16; i[28] = 18; i[29] = 19;
// fill in the right face index data
i[30] = 20; i[31] = 21; i[32] = 22;
i[33] = 20; i[34] = 22; i[35] = 23;
_mesh->UnlockIndexBuffer();
然后属性:
DWORD* a=0;
_mesh->LockAttributeBuffer(0,&a);
for(int i=0,j=0;i <12;i+=2)
{
a=j;
a[i+1]=j;
j++;
}
_mesh->UnlockAttributeBuffer();
然后调试里看属性信息,居然这样,汗了:
AttribId 0
FaceStart 0
FaceCount 2
VertexStart 0
VertexCount 3
AttribId 1
FaceStart 2
FaceCount 2
VertexStart 3
VertexCount 3
AttribId 2
FaceStart 4
FaceCount 2
VertexStart 6
VertexCount 4
AttribId 3
FaceStart 6
FaceCount 2
VertexStart 10
VertexCount 4
第一二个属性有误,其顶点个数应为四,后面都正常。可我实在没想通,,,就一个DWORD型指针,一个WORD型指针,还是强制转换后的指,,,怎么会出现这种离谱的错误?高人帮忙啊~~~~~~!!! |
|