Cómo: Crear un búfer de índice

Los búferes de índice contienen datos de índice. En este tema se muestra cómo inicializar un búfer de índice como preparación para la representación.

Para inicializar un búfer de índice

  1. Cree un búfer que contenga la información de índice.
  2. Cree una descripción del búfer rellenando una estructura de D3D11_BUFFER_DESC . Pase la marca D3D11_BIND_INDEX_BUFFER al miembro BindFlags y pase el tamaño del búfer en bytes al miembro ByteWidth .
  3. Cree una descripción de datos subrecursos rellenando una estructura de D3D11_SUBRESOURCE_DATA . El miembro pSysMem debe apuntar directamente a los datos de índice creados en el paso uno.
  4. Llame a ID3D11Device::CreateBuffer mientras pasa la estructura de D3D11_BUFFER_DESC , la estructura D3D11_SUBRESOURCE_DATA y la dirección de un puntero a la interfaz ID3D11Buffer para inicializar.

En el ejemplo de código siguiente se muestra cómo crear un búfer de índice. En este ejemplo se supone que

g_pd3dDevice

es un objeto ID3D11Device válido y que

g_pd3dContext

es un objeto ID3D11DeviceContext válido.

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

Búferes

Cómo usar Direct3D 11