Guide pratique pour créer une mémoire tampon d’index

Les mémoires tampons d’index contiennent des données d’index. Cette rubrique montre comment initialiser une mémoire tampon d’index en préparation du rendu.

Pour initialiser une mémoire tampon d’index

  1. Créez une mémoire tampon qui contient vos informations d’index.
  2. Créez une description de mémoire tampon en remplissant une structure D3D11_BUFFER_DESC . Passez l’indicateur D3D11_BIND_INDEX_BUFFER au membre BindFlags et transmettez la taille de la mémoire tampon en octets au membre ByteWidth .
  3. Créez une description des données de sous-ressource en remplissant une structure D3D11_SUBRESOURCE_DATA . Le membre pSysMem doit pointer directement vers les données d’index créées à l’étape 1.
  4. Appelez ID3D11Device::CreateBuffer en passant la structure D3D11_BUFFER_DESC , la structure D3D11_SUBRESOURCE_DATA et l’adresse d’un pointeur vers l’interface ID3D11Buffer à initialiser.

L’exemple de code suivant montre comment créer une mémoire tampon d’index. Cet exemple suppose que

g_pd3dDevice

est un objet ID3D11Device valide et que

g_pd3dContext

est un objet ID3D11DeviceContext valide.

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

Mémoires tampons

Utilisation de Direct3D 11