電子書《精通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