方法:インデックス バッファーの作成

インデックス バッファーには、インデックス データが格納されます。ここでは、レンダリングの準備のためにインデックス バッファーを初期化する方法について説明します。

インデックス バッファーを初期化するには

  1. インデックス情報を格納するバッファーを作成します。
  2. D3D11_BUFFER_DESC 構造体に値を競って値して、バッファーの記述を作成します。D3D11_BIND_INDEX_BUFFER フラグを BindFlags メンバーに渡し、このバッファーのサイズ (バイト) を ByteWidth メンバーに渡します。
  3. D3D11_SUBRESOURCE_DATA 構造体に値を設定して、サブリソース データの記述を作成します。pSysMem メンバーは、手順 1 で作成したインデックス データを直接指している必要があります。
  4. D3D11_BUFFER_DESC 構造体、D3D11_SUBRESOURCE_DATA 構造体、および初期化する ID3D11Buffer インターフェイスのポインターのアドレスを指定して、ID3D11Device::CreateBuffer を呼び出します。

次のコード例は、インデックス バッファーを作成する方法を示しています。この例では、g_pd3dDevice が有効な ID3D11Device オブジェクトであり、g_pd3dContext が有効な ID3D11DeviceContext オブジェクトであることを前提としています。

 ID3D11Buffer *g_pIndexBuffer = NULL;  // Create indices. unsigned int indices[] = { 0, 1, 2 };  // Fill in a buffer description. D3D11_BUFFER_DESC bufferDesc; bufferDesc.Usage           = D3D11_USAGE_DEFAULT; bufferDesc.ByteWidth       = sizeof( unsigned int ) * 3; bufferDesc.BindFlags       = D3D11_BIND_INDEX_BUFFER; bufferDesc.CPUAccessFlags  = 0; bufferDesc.MiscFlags       = 0;  // Define the resource data. D3D11_SUBRESOURCE_DATA InitData; InitData.pSysMem = indices; InitData.SysMemPitch = 0; InitData.SysMemSlicePitch = 0;  // Create the buffer with the device. hr = g_pd3dDevice->CreateBuffer( &bufferDesc, &InitData, &g_pIndexBuffer ); if( FAILED( hr ) )     return hr;  // Set the buffer. g_pd3dContext->IASetIndexBuffer( g_pIndexBuffer, DXGI_FORMAT_R32_UINT, 0 );     

関連項目

バッファー