Большие модели DirectX & gt; Переполнение стека 64 КБ

Мой DirectX11 C ++ Engine использует uint16_t (short) для буфера индекса вершины, и все работало хорошо.

Я усовершенствовал модели, которые я использую, и теперь они выросли с более чем 64 тыс. Индексов.

Я изменил все ссылки на мой индексный буфер с короткого на 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

соответственно.

Любые советы приветствуются.

-1

Решение

Что именно вы думаете, это смысл DXGI_FORMAT_R8G8B8A8_UINT как индексный формат буфера? если ты проверить документацию, Вы найдете только два допустимых формата, которые IASetIndexBuffer() приму. Если ваши показатели std::uint32_t тогда соответствующий формат DXGI будет DXGI_FORMAT_R32_UINT, Кроме того, я настоятельно рекомендую использовать контекст отладки и посмотрите на выходные данные отладки при отладке …

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]