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
- Erstellen Sie einen Puffer, der Ihre Indexinformationen enthält.
- 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 .
- 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.
- 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 );
Zugehörige Themen