Заполнить 2D-область, ограниченную вершинами в XNA

Я изучаю XNA на практике и, как говорится в заголовке, пытаюсь выяснить, есть ли способ заполнить 2D-область, определяемую набором вершин на плоскости. Я хочу заполнить цветом, а не файловой текстурой.

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

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

Это как исследование того, «что подходит для XNA», так и его реализация. Будучи новичком в XNA, я также хочу узнать, что следует и чего не следует делать помимо того, что можно и что нельзя делать.


person redman    schedule 15.05.2010    source источник
comment
Если я вас правильно понял, вам нужно начать изучать алгоритмы триангуляции. В Википедии должны быть перечислены некоторые из них.   -  person SigTerm    schedule 16.05.2010


Ответы (1)


Не слишком много, но вот начало:

Цветовая заливка выполняется с помощью шейдера. Руководство Реймера по XNA по пиксельным шейдерам – отличный ресурс. по теме.

Вам нужно рассчитать геометрию и создать буферы вершин для ее хранения. Обратите внимание, что вся векторная геометрия в XNA представлена ​​в 3D, но использование камеры, закрепленной на плоскости, будет имитировать 2D.

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

person Peter Lillevold    schedule 15.05.2010
comment
С технической точки зрения, все, что связано с графикой для XNA, — это 3D, просто Spritebatch и его друзья позволяют вам рисовать в 2D... - person RCIX; 16.05.2010