2014-01-27 5 views
0

Я создал свой собственный маленький 2D-движок с DirectX (okey, должен быть больше похож на GUI в конце) и попытался создать закругленные края для простого прямоугольника. Поскольку я никогда не делал этого с графикой, прежде чем я понятия не имел, как это сделать. На данный момент я просто перекрыл 5 прямоугольников и 4 круга (круги используются для закругленных ребер). Он работает с непрозрачными цветами, но если я добавляю альфу в прямоугольники, круги создают проблемы. (Показано на рисунке ниже - я должен выбрать другой цвет ...)закругленные края/углы в DirectX (D3D9)

<# Open Image #>

Я не могу найти решения самого (я гугл и whondered я не нашел ничего о закругленных краях в DirectX) и I действительно верьте, что существует очень мощный и быстрый способ сделать это. Итак, мой последний вопрос: какой общий алгоритм создает прямоугольник с закругленными краями в Direct3D9?

ответ

1

Обычный способ рисования округлых квадрациклов - использование текстур с альфа-каналом. Это очень просто, и большинство изображений gui использует изображения для достижения определенного вида. Если вы рисуете только одноцветные прямоугольники, это может выглядеть очень общее через некоторое время (даже если у них есть причудливые закругленные углы;)).

Но если вы хотите нарисовать округленные квадрациклы напрямую, я бы предположил, что вы создадите настраиваемую геометрию, которая подходит к нужной области непосредственно без перекрытия (необходимость в алфавитном порядке). В случае, вы бы что-то вроде этого:

Geometry for a rounded quad

Чем больше треугольников, которые вы используете для угла ровнее она будет выглядеть.

+0

Ну, в этом случае я думал о том, что будет неэффективно. Но если это самый распространенный метод, я присоединяюсь. Спасибо вам большое! Теперь я могу завершить свой проклятый DX GUI: D – DevilsJin