Предположим, я создаю два буфера вершин для двух разных сеток.Использование индексных буферов в DirectX 11; как он узнает?
(I'm assuming creating separate buffers for separate meshes is how it's usually done)
Теперь предположим, что я хочу нарисовать одну из сеток с помощью индексного буфера. Глядя на книгу Практическая визуализация и вычисление с помощью Direct3D 11 не похоже, что создание индексного буфера каким-либо образом ссылается на буфер вершин, так как знает буфер индекса (во время сборки ввода), какой буфер вершин должен действовать ?
Я сделал несколько поисковых запросов без ответов, что заставляет меня предположить, что в этом есть что-то очевидное, что я отсутствую.
Хорошо, я не знал об этом. Так скажите, было ли мое предположение правильным в том, что у вас есть отдельные буферы для отдельных сеток? Я понимаю, что один из них может быть полезен для определенных сеток, таких как статические реквизиты на сцене и т. Д., Но в целом это хорошая/плохая практика? Существуют ли какие-либо ограничения в отношении того, сколько можно/должно использовать? –
Вы можете организовать свои VBs/IB по-разному. Ключевая проблема заключается в том, что вы должны иметь возможность подавать каждое «подмножество ячеек» как отдельную ничью, потому что параметры материала должны меняться между ничьей.Вы даже можете использовать один VB и один IB для целых уровней (в рамках [аппаратных ограничений] (https://blogs.msdn.microsoft.com/chuckw/2012/06/20/direct3d-feature-levels/)). Если вы новичок в DirectX, вы должны просто сделать то, что просто. BTW, посмотрите на [DirectX Tool Kit] (https://github.com/Microsoft/DirectXTK/wiki/Getting-Started). –
@EliasFinoli. Лучшая практика (с точки зрения производительности) уменьшает количество вызовов DI, то есть пакетно-групповые сетки, которые разделяют вершинную компоновку, некоторые текстуры и некоторые шейдеры вместе, объединяя их VB/IB и отображая их в один вызов. Существует не общая стратегия выбора, она зависит от вашей сцены, целевых аппаратных возможностей и т. Д. Некоторые из этих методов упоминаются здесь (https://developer.nvidia.com/gpugems/GPUGems/gpugems_ch28.html). – w1ck3dg0ph3r