一、创建一个索引缓冲区Buffer
ID3D11Buffer*g_pIndexBuffer = nullptr;
unsigned int indices[] = {0, 1, 2};
二、初始化D3D11_BUFFER_DESC,BindFlags传递D3D11_BIND_INDEX_BUFFER
// 填充D3D11_BUFFER_DESC
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;
三、填充D3D11_SUBRESOURCE_DATA,成员pSysMem直接指向第一步中的索引数据
// 定义D3D11_SUBRESOURCE_DATA
D3D11_SUBRESOURCE_DATA InitData;
InitData.pSysMem = indices; // 第一步创建索引数据
InitData.SysMemPitch = 0;
InitData.SysMemSlicePitch = 0;
四、调用ID3D11Device::CreateBuffer
// 创建Buffer
hr = g_pd3dDevice->CreateBuffer(&bufferDesc, &initData, &g_pIndexBuffer);
if( FAILED(hr) )
{
return hr;
}
// 设置buffer
g_pd3dContext->IASetIndexBuffer(g_pIndexBufferm, DXGI_FORMAT_R32_UINT, 0);