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_DESCBindFlagsD3D11_BIND_CONSTANT_BUFFER に設定) の場合は、byteWidth の値 16 の倍数でD3D11_BUFFER_DESCに設定し、D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT以下にする必要があります。

Windows 8 以降のオペレーティング システムで使用できる Direct3D 11.1 ランタイムは、 CreateBuffer に次の新機能を提供します。

シェーダーがアクセスできる最大定数バッファー サイズ (4096 32 ビット*4 コンポーネント定数 – 64 KB) を超える定数バッファーを作成できます。 定数バッファーをパイプラインにバインドする場合 (たとえば、 PSSetConstantBuffers または PSSetConstantBuffers1 を使用)、シェーダーがアクセスできるバッファーの範囲を 4096 定数制限内に収まるように定義できます。

Direct3D 11.1 ランタイム (Windows 8 以降のオペレーティング システムで使用可能) は 、機能レベル 9.1、9.2、および 9.3 でこの機能をエミュレートします。そのため、この機能は機能レベル 9.1、9.2、および 9.3 でサポートされています。

この機能は、機能レベル 10 以降の新しいドライバーで常に使用できます。

Direct3D 11.1 より前のランタイムでは、4096 より大きい定数バッファーを要求する CreateBuffer の呼び出しが失敗します。

必要条件

   
対象プラットフォーム Windows
ヘッダー d3d11.h
Library D3D11.lib

関連項目

ID3D11Device