Переход к буферам вершин/индексов DirectX

У меня есть основной вопрос о directx (я использую d3d9), после просмотра некоторых руководств я хочу создать базовую 3D-программу, и, похоже, я не понимаю 1 вещь.

Нужно ли копировать вершины/индексы каждый раз, когда я хочу нарисовать модель в 1 буфер вершин? Или я могу загрузить несколько моделей в 1 буфер вершин/индексов? Или мне нужно сделать несколько буферов вершин/индексов, каждый для каждой модели?


person Not Szwagi    schedule 25.08.2016    source источник


Ответы (1)


Вы можете делать все, что хотите, если вы посмотрите на IDirect3DDevice9::DrawIndexedPrimitive, вы найдете BaseVertexIndex и StartIndex, это позволяет вам выполнять смещение в буфере вершин и индексов, так что да, вы можете упаковать несколько геометрий в один и тот же буфер, это полезно чтобы уменьшить количество вызовов до SetIndices и SetStreamSource. Если ваш шаг вершины изменится, вам все равно придется вызывать более позднюю версию со смещением в байтах и ​​новым шагом.

Если вы не имеете дело с динамической геометрией, вы обычно копируете данные один раз в свои буферы и повторно используете их также во всех кадрах.

person galop1n    schedule 25.08.2016