创建网格
我们可以用D3DXCreateMeshFVF函数创建一个"空"网格对象 ,空网格对象是指我们指定了网格的面片总数和顶点总数,然后由该函数为顶点缓存、索引缓存和属性缓存分配大小合适的内存,之后即可手工填入网格数据。
cpp
HRESULT WINAPI D3DXCreateMeshFVF(
DWORD NumFaces,
DWORD NumVertices,
DWORD Options,
DWORD FVF,
LPDIRECT3DDEVICE9 pD3DDevice,
LPD3DXMESH* ppMesh
);
NumFaces:网格将具有的面片总数,该值必须大于0
NumVertices:网格将具有的顶点总数,该值必须大于0
Options :创建网格时所使用的创建标记,枚举D3DXMESH,一些常用的标记如下
D3DXMESH_32BIT 网格将使用32位索引
D3DXMESH_MANAGED 网格数据将被存储于托管内存池中
D3DXMESH_WEITEONLY 指定网格数据为只读
FVF:存储在该网格中的顶点的灵活顶点格式
pDevice:设备指针
ppMesh:所创建的网格对象的指针
也可以用函数D3DXCreateMesh函数来创建空网格,在该函数中并未指定FVF,而是用一个D3DVERTEXELEMENT9类型的结构数组来描述顶点数据的布局方式。
cpp
HRESULT WINAPI D3DXCreateMesh(
DWORD NumFaces,
DWORD NumVertices,
DWORD Options,
CONST D3DVERTEXELEMENT9 *pDeclaration,
LPDIRECT3DDEVICE9 pD3DDevice,
LPD3DXMESH* ppMesh
);
HRESULT WINAPI D3DXDeclaratorFromFVF(
DWORD FVF,
D3DVERTEXELEMENT9 pDeclarator[MAX_FVF_DECL_SIZE]
);