Лучшая практика для простого рендеринга наложений DirectX

Я создаю игру DirectX 11, которая отображает сложные сетки в трехмерном пространстве. Я использую вершинные/индексные буферы/шейдеры, и все это работает нормально. Однако теперь я хочу выполнить некоторый базовый рендеринг «наложения» — точнее, я хочу визуализировать каркасные блоки в 3D-пространстве, чтобы показать границы определенной области. В любой момент времени в поле зрения будет только один или два прямоугольника, и их вершины будут менять положение в каждом кадре.

Поэтому я искал более простые методы рендеринга DX11, но большинство статей, которые я нашел, по-прежнему готовят буфер вершин/индексов для очень простого рендеринга. Я знаю, что аппаратное обеспечение хорошо оптимизировано для обработки потоков вершин, но действительно ли накладные расходы на создание и заполнение буфера вершин в каждом кадре только для обработки 8 вершин являются наиболее эффективным методом?

Поэтому мой вопрос заключается в том, каков наиболее эффективный метод выполнения этого очень простого рендеринга в DX11? Есть ли более примитивный метод ("DrawLine", "DrawLineList(D3DXVECTOR3[])",...), который был бы лучшим решением? Это может быть менее эффективно для каждой вершины, чем стандартный метод передачи буферов вершин, потому что он будет использоваться только для нескольких вершин на кадр.

заранее спасибо

Роб


person RobJ    schedule 04.01.2014    source источник
comment
Вы не используетеt need to create buffer each frame, just update it with new data. You can also create your own functions, such as DrawLine()` DrawLineList(), а также DrawBox() и даже DrawEverythingElse(). Просто напишите это один раз, и они сделают все шаблонные вещи для вас в любое время. Конечно, вы можете найти реализации рисования ограничивающих фигур в Интернете.   -  person Ivan Aksamentov - Drop    schedule 05.01.2014


Ответы (1)


Вы должны создать один буфер вершин/индексов для каждой примитивной формы (коробка, сфера, ...) и использовать матрицу преобразования, чтобы правильно разместить ее в мире.

person Simon Ferquel    schedule 06.01.2014