IDirect3DDevice9::CreateVertexBuffer 方法 (d3d9helper.h)
建立頂點緩衝區。
語法
HRESULT CreateVertexBuffer(
[in] UINT Length,
[in] DWORD Usage,
[in] DWORD FVF,
[in] D3DPOOL Pool,
[out, retval] IDirect3DVertexBuffer9 **ppVertexBuffer,
[in] HANDLE *pSharedHandle
);
參數
[in] Length
類型: UINT
頂點緩衝區的大小,以位元組為單位。 對於 FVF 頂點緩衝區,Length 必須夠大,才能包含至少一個頂點,但不需要是頂點大小的倍數。 長度不會針對非 FVF 緩衝區進行驗證。 請參閱<備註>。
[in] Usage
類型: DWORD
使用量可以是 0,表示沒有使用值。 不過,如果需要使用方式,請使用一或多個 D3DUSAGE 常數的組合。 最好讓 CreateVertexBuffer 中的 usage 參數與 IDirect3D9::CreateDevice 中的行為旗標相符。 如需詳細資訊,請參閱<備註>。
[in] FVF
類型: DWORD
D3DFVF 的組合,此使用規範描述此緩衝區中頂點的頂點格式。 如果此參數設定為有效的 FVF 程式代碼,則建立的頂點緩衝區是 FVF 頂點緩衝區, (請參閱備註) 。 否則,如果此參數設定為零,頂點緩衝區是非 FVF 頂點緩衝區。
[in] Pool
類型: D3DPOOL
D3DPOOL列舉型別的成員,描述要放置資源的有效記憶體類別。 請勿設定為 D3DPOOL_SCRATCH。
[out, retval] ppVertexBuffer
類型: IDirect3DVertexBuffer9**
表示所建立頂點緩衝區資源的 IDirect3DVertexBuffer9 介面指標位址。
[in] pSharedHandle
類型: HANDLE*
保留的。 將此參數設定為 NULL。 此參數可用於 Direct3D 9,讓 Windows Vista 共用資源。
傳回值
類型: HRESULT
如果方法成功,傳回值會D3D_OK。 如果方法失敗,傳回值可以是下列其中一項:D3DERR_INVALIDCALL、D3DERR_OUTOFVIDEOMEMORY E_OUTOFMEMORY。
備註
頂點緩衝區可以與硬體或軟體頂點處理搭配使用。 這取決於裝置和頂點緩衝區的建立方式。
建立裝置時,CreateDevice 會使用行為旗標來判斷是否要在硬體或軟體中處理頂點。 有三種可能性:
- 藉由設定 D3DCREATE_HARDWARE_VERTEXPROCESSING,在硬體中處理頂點。
- 藉由設定 D3DCREATE_SOFTWARE_VERTEXPROCESSING,在軟體中處理頂點。
- 設定D3DCREATE_MIXED_VERTEXPROCESSING,以處理硬體或軟體中的頂點。
建立頂點緩衝區時,CreateVertexBuffer 會使用 usage 參數來決定是否要在硬體或軟體中處理頂點。
- 如果 CreateDevice 使用 D3DCREATE_HARDWARE_VERTEXPROCESSING,CreateVertexBuffer 必須使用 0。
- 如果 CreateDevice 使用 D3DCREATE_SOFTWARE_VERTEXPROCESSING,CreateVertexBuffer 必須使用 0 或 D3DUSAGE_SOFTWAREPROCESSING。 針對任一值,頂點將會在軟體中處理。
- 如果 CreateDevice 使用 D3DCREATE_MIXED_VERTEXPROCESSING,CreateVertexBuffer 可以使用 0 或 D3DUSAGE_SOFTWAREPROCESSING。
IDirect3DDevice9 介面支援使用儲存在頂點緩衝區物件中的頂點數據來轉譯基本類型。 頂點緩衝區是從IDirect3DDevice9建立,而且只能與建立它們的IDirect3DDevice9物件搭配使用。
當設定為非零值時,必須是有效的 FVF 程式代碼時,FVF 參數會指出緩衝區內容是以 FVF 程式代碼來描述。 使用 FVF 程式代碼建立的頂點緩衝區稱為 FVF 頂點緩衝區。 如需詳細資訊,請參閱 FVF 頂點緩衝區 (Direct3D 9) 。
非 FVF 緩衝區可用來在單一傳遞中交錯多路轉譯或多文字轉譯期間進行數據交錯。 若要這樣做,其中一個緩衝區包含幾何數據,而其他緩衝區則包含要呈現之每個紋理的紋理座標。 轉譯時,包含幾何數據的緩衝區會與包含紋理座標的每個緩衝區交錯。 如果改用 FVF 緩衝區,除了轉譯每個紋理特有的紋理座標數據之外,每個緩衝區都需要包含相同的幾何數據。 這會導致速度或記憶體負面影響,視所使用的策略而定。 如需紋理座標的詳細資訊,請參閱 紋理座標 (Direct3D 9) 。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | d3d9helper.h (包含 D3D9.h) |
程式庫 | D3D9.lib |
另請參閱
IDirect3DDevice9::P rocessVertices