Cara: Membuat Buffer Indeks

Buffer indeks berisi data indeks. Topik ini menunjukkan cara menginisialisasi buffer indeks sebagai persiapan untuk penyajian.

Untuk menginisialisasi buffer indeks

  1. Buat buffer yang berisi informasi indeks Anda.
  2. Buat deskripsi buffer dengan mengisi struktur D3D11_BUFFER_DESC . Teruskan bendera D3D11_BIND_INDEX_BUFFER ke anggota BindFlags dan berikan ukuran buffer dalam byte ke anggota ByteWidth .
  3. Buat deskripsi data subsumber daya dengan mengisi struktur D3D11_SUBRESOURCE_DATA . Anggota pSysMem harus menunjuk langsung ke data indeks yang dibuat di langkah pertama.
  4. Panggil ID3D11Device::CreateBuffer saat melewati struktur D3D11_BUFFER_DESC , struktur D3D11_SUBRESOURCE_DATA , dan alamat pointer ke antarmuka ID3D11Buffer untuk diinisialisasi.

Contoh kode berikut menunjukkan cara membuat buffer indeks. Contoh ini mengasumsikan bahwa

g_pd3dDevice

adalah objek ID3D11Device yang valid dan

g_pd3dContext

adalah objek ID3D11DeviceContext yang valid.

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

Buffer

Cara Menggunakan Direct3D 11