ID3D11Device::CreateBuffer 方法 (d3d11.h)
建立緩衝區 (頂點緩衝區、索引緩衝區或著色器常數緩衝區) 。
語法
HRESULT CreateBuffer(
[in] const D3D11_BUFFER_DESC *pDesc,
[in, optional] const D3D11_SUBRESOURCE_DATA *pInitialData,
[out, optional] ID3D11Buffer **ppBuffer
);
參數
[in] pDesc
類型:const D3D11_BUFFER_DESC*
描述緩衝區 之D3D11_BUFFER_DESC 結構的指標。
[in, optional] pInitialData
類型:const D3D11_SUBRESOURCE_DATA*
描述初始化資料的D3D11_SUBRESOURCE_DATA結構的指標;使用Null只配置空間 (,但使用旗標D3D11_USAGE_IMMUTABLE) 時,它不能是Null。
如果您未將任何內容傳遞至 pInitialData,緩衝區的初始記憶體內容就會未定義。 在此情況下,您必須在讀取資源之前,以其他方式寫入緩衝區內容。
[out, optional] ppBuffer
類型: ID3D11Buffer**
所建立緩衝區物件的 ID3D11Buffer 介面指標位址。 將此參數設定為 Null ,以驗證其他輸入參數 (S_FALSE 表示傳遞) 。
傳回值
類型: HRESULT
如果記憶體不足而無法建立緩衝區,這個方法會傳回 E_OUTOFMEMORY 。 如需其他可能的傳回值,請參閱 Direct3D 11 傳回碼 。
備註
如需範例程式碼,請參閱 如何:建立頂點緩衝區、 如何:建立索引緩衝區 或 如何:建立常數緩衝區。
針對D3D11_BUFFER_DESC設定為D3D11_BIND_CONSTANT_BUFFER) 的BindFlags常數 (緩衝區,您必須在16 的倍數中設定D3D11_BUFFER_DESC的ByteWidth值,且小於或等於D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT。
Direct3D 11.1 執行時間可在 Windows 8 和更新版本的作業系統上使用,提供 下列 CreateBuffer新功能:
您可以建立大於著色器可存取的常數緩衝區大小上限的常數緩衝區, (4096 32 位*4 元件常數 – 64KB) 。 例如,當您將常數緩衝區系結至管線 (例如,透過 PSSetConstantBuffers 或 PSSetConstantBuffers1) ,您可以定義著色器可存取的緩衝區範圍,以符合 4096 常數限制。
Windows 8 和更新版本中提供的 Direct3D 11.1 執行時間 (,) 模擬 功能層級 9.1、9.2 和 9.3 的功能;因此,此功能支援功能層級 9.1、9.2 和 9.3。
此功能一律適用于功能層級 10 和更新版本的新驅動程式。
在 Direct3D 11.1 之前的執行時間上,呼叫 CreateBuffer 以要求大於 4096 的常數緩衝區失敗。
規格需求
目標平台 | Windows |
標頭 | d3d11.h |
程式庫 | D3D11.lib |