DirectX 11 — Bullet Debug Draw

Я использую Bullet Physics в своем собственном игровом движке DirectX 11 и хочу использовать класс отладочной отрисовки, предоставляемый bullet. По сути, вы создаете класс, который получает все линии, которые должны быть нарисованы маркером. Есть ли простой и быстрый способ просто нарисовать 3D-линию в DirectX 11 (желательно без использования буферов и шейдеров и всего такого)?

1

Решение

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

Поскольку FFP был удален в DirectX 10, вам нужен простой шейдер. Вероятно, вершинный шейдер просто преобразует вершины с помощью преобразования вида и проекции, а пиксельный шейдер возвращает постоянный цвет (в зависимости от ваших потребностей).

Затем вы бы нарисовали буфер вершин с соответствующей топологией (список строк).

Причина, по которой нет простых методов (таких как ответ Иисуса Рамоса или OpenGL glBegin(GL_LINES)является то, что они не могут быть реализованы эффективно. Всегда необходимо передавать в GPU больше данных, чем необходимо. Вот почему программист должен писать эффективный код с использованием буферов.

4

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

использование LP3DXLINE и позвонить D3DXCreateLine нарисовать простую линию. призвание Draw с массивом длины 2 (начало, конец) для вашей строки, и он должен работать.

РЕДАКТИРОВАТЬ: Это, очевидно, только DX9. Оставив здесь ответ на всякий случай, это поможет кому-то еще.

1

Любой шанс использовать треугольник в освещенном каркасе и сделать 2 вершины в одном месте:
x1y1z1, x2y2z2, x2y2z2
Я делаю это в DBPro, и это работает.

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