CreateVertexBuffer可以創建一個頂點緩衝區。
原型,參數,返回值,
原型
HRESULT IDirect3DDevice9::CreateVertexBuffer
(
UINT Length,
DWORD Usage,
DWORD FVF,
D3DPOOL Pool,
IDirectVertexBuffer9** ppVertexBuffer,
HANDLE pHandle
);
參數
Length
[in]指定頂點緩衝區的大小,以位元組為單位
Usage
[in]指定頂點緩衝區屬性,它可以設為0或下表所列值的任意組合(邏輯或)
D3DUSAGE_DONOTCLIP | 禁用裁剪,表示頂點緩衝區中的頂點不進行裁剪,當設定該屬性時,渲染狀態D3DRS_CLIPPING必須設定為FALSE |
D3DUSAGE_DYNMIC | 頂點緩衝區使用動態記憶體(AGP memory) |
D3DUSAGE_NPATCHES | 使用頂點緩衝區繪製N-patches曲線 |
D3DUSAGE_POINTS | 使用頂點緩衝區繪製點 |
D3DUSAGE_RTPATCHES | 使用頂點緩衝區繪製曲線 |
D3DUSAGE_SOFTWAREPROCESSING | 當設定該屬性時,表示使用軟體進行頂點計算,否則使用硬體進行頂點計算 |
D3DUSAGE_WRITEONLY | 只寫屬性,不能進行讀操作,設定該屬性可以提高系統性能 |
FVF
[in]表示頂點的靈活頂點格式 如下表
D3DFVF_DIFFUSE | 頂點數據中包含漫反射的顏色值 |
D3DFVF_NORMAL | 頂點數據中包含法線向量,不能和D3DFVF_XYZRHW同時使用 |
D3DFVF_PSIZE | 頂點信息指明繪製點的大小 |
D3DFVF_SPECULAR | 頂點數據中包含鏡面反射顏色值 |
D3DFVF_XYZ | 頂點數據中包含未經坐標變換的頂點坐標,不能和D3DFVF_XYZRHW同時使用 |
D3DFVF_XYZRHW | 頂點數據中包含經過坐標變換的頂點坐標,不能和D3DFVF_NORMAL或D3DFVF_XYZ同時使用 |
D3DFVF_XYZB5 | 頂點數據中包含用於骨骼動畫的頂點和頂點對骨骼的權重信息 |
D3DFVF_XYZB1... | 頂點數據中包含用於骨骼動畫的頂點和頂點對骨骼的權重信息 |
D3DFVF_XYZW | 頂點數據中包含經過坐標變換和裁剪的頂點坐標,只可用於可程式頂點流水線 |
D3DFVF_TEX8 | 頂點數據中包含0~8個紋理坐標,用於紋理繪製 |
D3DFVF_TEX0... | 頂點數據中包含0~8個紋理坐標,用於紋理繪製 |
Pool
[in]屬於枚舉類型D3DPOOL,用於指定頂點緩衝區記憶體類型,如下表
D3DPOOL_DEFAULT | 頂點緩衝區儘可能存在於顯存中 |
D3DPOOL_MANAGED | 由Direct3D系統自動調度頂點緩衝區記憶體類型(位於顯存或計算機系統記憶體中) |
D3DPOOL_SYSTEMMEN | 頂點緩衝區位於計算機系統中 |
D3DPOOL_SCRATCH | 頂點緩衝區位於計算機臨時記憶體中,這種類型的頂點緩衝區不能直接用於渲染操作,只能進行記憶體加鎖、複製等操作 |
ppVertexBuffer
[out]是一個指向創建的頂點緩衝區地址的指針,用於返回頂點緩衝區的地址
pSharedHandle
[in]是一個保留參數,可設定為NULL
返回值
如果執行成功返回D3D_OK.
如果執行失敗返回值可能是:D3DERR_INVALIDCALL, D3DERR_OUTOFVIDEOMEMORY, E_OUTOFMEMORY.
Requirements
Header | D3D9.h |
---|---|
Library | D3D9.lib |