Вам не нужно уничтожать буфер каждый кадр. Создать динамический буфер.
Ознакомьтесь со статьей Использование буферов вершин с DirectX , если вы еще этого не сделали:
Для динамических буферов вершин, которые содержат информацию о примитивах, которые часто меняются в сцене, нам нужно указать флаги D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY
для использования и флаг D3DPOOL_DEFAULT
для пула.
Помните, однако, что данные по-прежнему должны отправляться в конвейер для каждого обновления. Таким образом, определенно будут некоторые затраты производительности по сравнению со статическими буферами с согласованными данными.
Также вам следует постараться сохранить минимальные обновления буфера, а также переключатели буфера. Много ли таких редактируемых полигонов в вашем приложении? Если ответ да , возможно, стоит рассмотреть возможность помещения их в один буфер.
Официальный сайт Q / A для разработчиков графики / игр: https://gamedev.stackexchange.com/
Обновление
Звучит довольно хорошо для меня.
Динамические вершинные буферы, с другой стороны, заполняются и отбрасываются в каждый кадр.
Это взято из статьи и в значительной степени является ответом для 1. и 2. . Вместо того, чтобы обновлять отдельные вершины или тщательно выбирать, какие из них следует перезаписать, я бы просто обновил весь буферный контент. Полный буфер должен быть отправлен на устройство в любом случае. Вы должны проверить это, хотя, чтобы быть уверенным.
Относительно 3. : Вы не можете изменить размер буфера после того, как он был создан, но вы можете создать больший буфер, чем фактически необходимо. Поэтому постарайтесь оценить хороший запас. Если буфер все еще слишком мал, у вас будет , чтобы создать новый. Нет другого решения для этого. Вы уже нашли возможный алгоритм динамического увеличения размера буфера.
Когда дело касается графической производительности, параметров так много, что почти невозможно дать однозначные ответы. Вы уже сталкиваетесь с ограничениями? Если нет, не беспокойтесь слишком сильно. Будьте щедрыми со своими ресурсами, пока вы все еще развиваетесь.