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の BindFlags を D3D11_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 |