Freigeben über


Vorgehensweise: Erstellen eines Indexpuffers

Indexpuffer enthalten Indexdaten. In diesem Thema wird gezeigt, wie Sie einen Indexpuffer in Vorbereitung auf das Rendern initialisieren.

So initialisieren Sie einen Indexpuffer

  1. Erstellen Sie einen Puffer, der Ihre Indexinformationen enthält.
  2. Erstellen Sie eine Pufferbeschreibung, indem Sie eine D3D11_BUFFER_DESC Struktur ausfüllen. Übergeben Sie das D3D11_BIND_INDEX_BUFFER-Flag an das BindFlags-Element , und übergeben Sie die Größe des Puffers in Bytes an das ByteWidth-Element .
  3. Erstellen Sie eine Beschreibung der Unterressourcendaten, indem Sie eine D3D11_SUBRESOURCE_DATA-Struktur ausfüllen. Das pSysMem-Element sollte direkt auf die in Schritt 1 erstellten Indexdaten verweisen.
  4. Rufen Sie ID3D11Device::CreateBuffer auf, während Sie die D3D11_BUFFER_DESC-Struktur , die D3D11_SUBRESOURCE_DATA-Struktur und die Adresse eines Zeigers auf die ID3D11Buffer-Schnittstelle übergeben, die initialisiert werden soll.

Im folgenden Codebeispiel wird das Erstellen eines Indexpuffers veranschaulicht. In diesem Beispiel wird davon ausgegangen, dass

g_pd3dDevice

ist ein gültiges ID3D11Device-Objekt und

g_pd3dContext

ist ein gültiges ID3D11DeviceContext-Objekt .

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

Puffer

Verwenden von Direct3D 11