Я использую Bullet Physics в своем собственном игровом движке DirectX 11 и хочу использовать класс отладочной отрисовки, предоставляемый bullet. По сути, вы создаете класс, который получает все линии, которые должны быть нарисованы маркером. Есть ли простой и быстрый способ просто нарисовать 3D-линию в DirectX 11 (желательно без использования буферов и шейдеров и всего такого)?
К сожалению, нет простого пути. Вам необходимо создать буфер вершин с точками линии. Если вы хотите нарисовать несколько линий, поместите все свои вершины в один буфер для оптимизации производительности.
Поскольку FFP был удален в DirectX 10, вам нужен простой шейдер. Вероятно, вершинный шейдер просто преобразует вершины с помощью преобразования вида и проекции, а пиксельный шейдер возвращает постоянный цвет (в зависимости от ваших потребностей).
Затем вы бы нарисовали буфер вершин с соответствующей топологией (список строк).
Причина, по которой нет простых методов (таких как ответ Иисуса Рамоса или OpenGL glBegin(GL_LINES)
является то, что они не могут быть реализованы эффективно. Всегда необходимо передавать в GPU больше данных, чем необходимо. Вот почему программист должен писать эффективный код с использованием буферов.
использование LP3DXLINE
и позвонить D3DXCreateLine
нарисовать простую линию. призвание Draw
с массивом длины 2 (начало, конец) для вашей строки, и он должен работать.
РЕДАКТИРОВАТЬ: Это, очевидно, только DX9. Оставив здесь ответ на всякий случай, это поможет кому-то еще.
Любой шанс использовать треугольник в освещенном каркасе и сделать 2 вершины в одном месте:
x1y1z1, x2y2z2, x2y2z2
Я делаю это в DBPro, и это работает.