DirectX - как работает VertexBuffer?

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

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

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


person Aurus    schedule 13.11.2012    source источник


Ответы (1)


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

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

Представьте себе редактор ландшафта

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

person Cubic    schedule 13.11.2012