如何:建立索引緩衝區

索引緩衝區包含 索引資料。 本主題說明如何初始化 索引緩衝區 ,以準備轉譯。

初始化索引緩衝區

  1. 建立包含索引資訊的緩衝區。
  2. 填入 D3D11_BUFFER_DESC 結構來建立緩衝區描述。 將D3D11_BIND_INDEX_BUFFER旗標傳遞至 BindFlags 成員,並將緩衝區的大小以位元組為單位傳遞至 ByteWidth 成員。
  3. 填入 D3D11_SUBRESOURCE_DATA 結構,以建立子資源資料描述。 pSysMem成員應該直接指向在步驟一中建立的索引資料。
  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 );
    

緩衝區

如何使用 Direct3D 11