Мой DirectX11 C ++ Engine использует uint16_t (short) для буфера индекса вершин, и все работало хорошо.
Я усовершенствовал модели, которые я использую, и теперь они выросли с индексами более 64 тыс.
Я изменил все ссылки на мой индексный буфер с short на uint32_t, и рендеринг был прерван.
Моя переменная определяет:
ID3D11Buffer *IndexBuffer; //DirectX Index Buffer
vector<int32_t> primitiveIndices; //Vector array of indicies formally
Я наконец изменил строку
Context->IASetIndexBuffer(IndexBuffer, DXGI_FORMAT_R16_UINT, 0);
до
Context->IASetIndexBuffer(IndexBuffer, DXGI_FORMAT_R8G8B8A8_UINT, 0);
Это было сделано, чтобы разрешить 32-битные индексы.Однако это не в состоянии сделать.Я также обновил
D3D11_BUFFER_DESC::ByteWidth
соответственно.
Любой совет приветствуется.