方法: インデックス バッファーを作成する

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

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

  1. インデックス情報を含むバッファーを作成します。
  2. D3D11_BUFFER_DESC構造体を入力してバッファーの説明を作成します。 D3D11_BIND_INDEX_BUFFER フラグを BindFlags メンバーに渡し、バッファーのサイズをバイト単位で ByteWidth メンバーに渡します。
  3. D3D11_SUBRESOURCE_DATA構造体を入力して、サブリソース データの説明を作成します。 pSysMem メンバーは、手順 1 で作成したインデックス データを直接指す必要があります。
  4. ID3D11Device::CreateBuffer を呼び出し、D3D11_BUFFER_DESC構造体、D3D11_SUBRESOURCE_DATA構造体、および初期化する ID3D11Buffer インターフェイスへのポインターのアドレスを渡します。

次のコード例では、インデックス バッファーを作成する方法を示します。 この例では、

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 );
    

Buffers

Direct3D 11 の使用方法