电子书《精通DirectX.3D图形与动画程序设计.王德才.pdf》p53
HRESULT CreateVertexBuffer(
UINT Length,
DWORD Usage,
DWORD FVF,
D3DPOOL Pool,
IDirect3DVertexBuffer9** ppVertexBuffer,
HANDLE* pSharedHandle
);
Length:
指定缓冲区的大小,以字节为单位。
Usage:
指定顶点缓冲区的属性,可以设置成0:
D3DUSAGE_DONOTCLIP 禁用裁剪,表示顶点缓冲区的顶点不进行裁剪,当设置改属性时,渲染状态D3DRS_CLIPPING必须设置为FALSE
D3DUSAGE_DYNMIC 顶点缓冲区使用动态内存(AGP memory)
D3DUSAGE_NPATCHES 使用顶点缓冲区绘制N-patches曲线
D3DUSAGE_POINTS 使用顶点缓冲区绘制点
D3DUSAGE_RTPATCHES 使用顶点缓冲区绘制曲线
D3DUSAGE_SOFTWAREPROCESSING 当设置该属性时,表示使用软件进行顶点计算,否则使用硬件进行顶点计算
D3DUSAGE_WRITEONLY 只写属性,不能进行读操作,设置该属性可以提高系统性能
FVF:
顶点缓冲区的顶点可以包含顶点坐标、颜色、法线方向、纹理坐标等,可以使用灵活顶点格式FVF(Flexible Vertex Format)进行描述
D3DFVF_DIFFUSE 顶点数据中包含漫反射颜色值
D3DFVF_NORMAL 顶点数据中包含法线向量,不能和D3DFVF_XYZRHW同时使用、
D3DFVF_PSIZE 顶点信息执行绘制点的大小
D3DFVF_SPECULAR 顶点数据中包含镜面反射颜色值
D3DFVF_XYZ 顶点数据中包含未经坐标变换的顶点坐标,不能和D3DFVF_XYZRHW同时使用
D3DFVF_XYZRHW 顶点数据中包含经过坐标变换的顶点坐标,不能和D3DFVF_NORMAL或D3DFVF_XYZ同时使用
D3DFVF_XYZB1...
D3DFVF_XYZB5 顶点数据中包含用于骨骼动画的顶点和顶点对骨骼的权重信息
D3DFVF_XYZW 顶点数据中包含经过坐标变换的裁剪的顶点坐标,只可用于可编程顶点流水线
D3DFVF_TEX0...
D3DFVF_TEX1 顶点数据中包含0~8个纹理坐标,用于纹理绘制
Pool:
指定顶点缓冲区的内存类型。我们采用的是D3DPOOL_DEFAULT,意思是顶点缓冲区尽可能存在显存中。其他参数详细请参见SDK文档。
D3DPOOL_DEFAULT 顶点缓冲区尽可能存在于显存中
D3DPOOL_MANAGED 由Direct3D系统自动调度顶点缓冲区内存类型(位于显存或计算机系统内存中)
D3DPOOL_SYSTEMMEM 位于计算机系统内存中
D3DPOOL_SCRATCH 位于计算机临时内存中,这种类型的顶点缓冲区不能直接用于渲染操作,只能进行内存加锁、复制操作
ppVertexBuffer:
自己定义的IDirect3DVertexBuffer9的指针
pSharedHandle:
它是一个保留的参数可以设置为NULL