Поддержка рисования линий в D3DX (Direct3D 9)
D3DX — это служебная библиотека, которая предоставляет вспомогательные службы. Это слой над компонентом Direct3D.
D3DX поддерживает сглаживаемые линии шириной в один пиксель. Шаблоны линий больше не поддерживаются.
Библиотека рисования линий эмулирует линии с помощью треугольников текстуры и предполагает следующее:
- Оборудование доступно через интерфейсы Direct3D 9.
- Доступен по крайней мере один этап текстуры.
- Используются текстуры 64x64.
- Доступны следующие режимы:
- билинейная фильтрация;
- Режим "Зажим адреса"
- Режим переноса адреса
- Альфа-модуляция операции
- Альфа-смешивание (SRCBLEND = SRC_ALPHA, DESTBLEND = INV_SRC_ALPHA)
- Альфа-тестирование, если альфа-смешивание недоступно; более низкое качество результата
Для сглаживания линий в целевых объектах многопримерной отрисовки используйте ID3DXLine , который создает текстурированные многоугольника. Значения покрытия пикселей, создаваемые сглаживаемой растеризацией линий, модулируют альфа-значение пикселя, вычисленное шейдером пикселей. Чтобы отрисовать сглаживаемую линию, приложение должно включить альфа-смешивание, а затем задать для D3DRS_ANTIALIASEDLINEENABLE состояние отрисовки значение TRUE.
Описание функциональных возможностей
Библиотека поддерживает рисование цветных полос линий со следующими признаками линии, каждая из которых не зависит от других:
- Толщина линии
- Шаблон строки с повторением (счетчик шаблонов строк сбрасывается при каждом вызове ID3DXLine::D raw или ID3DXLine::D rawTransform . Он не сбрасывается с каждым сегментом полосы линии.)
- Сглаживание (антиальясинг)
- Линии в стиле OpenGL
Примечание
Митерирование не поддерживается.
Библиотека использует встроенную поддержку аппаратного рисования линий (если она доступна на устройстве), только если:
- Ширина линии — 1.
- Шаблон строки не включен.
Сглаживаемые линии шириной в один пиксель поддерживаются некоторыми аппаратными средствами, поэтому библиотека использует их, если они доступны. Элемент LineCaps структуры D3DCAPS9 перечисляет аппаратные возможности для примитивов для рисования линий.
При использовании программного рисования линии каждая линия разворачивается в прямоугольник, а четыре вершины передаются драйверу.
Каждый сегмент линии рисуется двумя треугольниками. Ширина примитива равна заданной ширине плюс 1,0, что может привести к созданию дополнительной строки или столбца пикселей. По мере расширения линии антиалиасный градиент в текстуре становится более грубым, а более полностью непрозрачные тексели реплицируются посередине. Градиент кодируется в V-направлении текстуры и обычно реплицируется вдоль u-направления. Режим адресации текстуры для v — clamp.
Каждый сегмент строки в списке можно считать отдельной строкой, которая начинается с предыдущей конечной точки.
Качество сглаживания вдоль краев, параллельных длине исходной линии, страдает по мере расширения линии. Ожидается, что ширина линии больше 32,0 начнет демонстрировать артефакты вдоль этих ребер.
Связанные темы