DirectX — Как работает VertexBuffer?

Я изучаю DirectX прямо сейчас, я много читал о VertexBuffer. Поскольку вы не можете учиться программированию, просто читая, я делаю небольшой движок с DX11 (ну, мой вопрос не зависит от версии)

Насколько я понял в VertexBuffer, я храню вершины и фактически храню их на графической карте. Я читал о динамических и статических буферах. Поэтому, если я правильно понимаю, статический буфер инициализируется вершинами, и инициализированные вершины не изменяются. Хорошо, но когда мне это действительно нужно. Я имею в виду в игре или что-то еще, когда у меня есть постоянные вершины? Может быть, для некоторых объектов пользовательского интерфейса ..? — но даже они не постоянны каждый раз … вы можете перемещать их 2D позицию … и т.д ..

Следующий момент касается динамических буферов вершин, например: у меня есть буфер с некоторыми вершинами, эти вершины прорисованы. Затем я хочу добавить или удалить некоторые вершины.
Что сейчас .. Так что я бы просто «обновил» буфер. Но действительно ли это правильно и хорошо для производительности? Представьте себе редактор местности. Там вы должны обновить тонны вершин.

5

Решение

Я имею в виду в игре или что-то еще, когда у меня есть постоянные вершины?

Все время на самом деле. Например, статическая геометрия, объекты пользовательского интерфейса, о которых вы упоминали, и т. Д. С вашей стороны есть небольшое недопонимание относительно движущихся объектов, поэтому возникает путаница — вы не перемещаете объекты, изменяя их вершины. Вместо этого вы поместите свои вершины в шейдерный конвейер. В вершинном шейдере вы можете применять произвольные преобразования к своим вершинам. Так, например, если у вас есть дерево, которое по какой-то причине перемещается по всему миру (может быть, оно находится на плавающем острове или что-то в этом роде), а не изменяете вершины, составляющие дерево, вы меняете преобразование, применяемое к вершинам. ,

Представьте себе редактор местности

Это зависит от того, что должен делать ваш редактор ландшафта, но, как правило, вы снова не собираетесь менять вершины здесь. То есть при редактировании высоты, а не перемещении вершин вверх и вниз, вы записываете карту высоты (большую часть времени текстуру в оттенках серого) и снова вычисляете преобразование на графическом процессоре в конвейере шейдеров.

7

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

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

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