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) 。 例如,當您將常數緩衝區系結至管線 (例如,透過 PSSetConstantBuffersPSSetConstantBuffers1) ,您可以定義著色器可存取的緩衝區範圍,以符合 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

另請參閱

ID3D11Device