2012-06-08 2 views
0

Мне нужно нарисовать простые альфа-карты в xna, которые зависят от текущего состояния игры. Я не могу сохранить много видов альфа-карт в реестре, поэтому я хочу их динамически рисовать.Xna: динамика рисования альфа-карта

Например, спрайт может быть частично скрыт за стеной.

Я думаю об использовании System.Drawing, но когда я включаю эту DLL, возникают конфликты с пространствами имен XNA. Есть ли другой способ рисовать простые растровые изображения в xna?

Спасибо за ваше время.

+1

Можете ли вы придумать какие-либо другие случаи, требующие динамической генерации альфа-карты? Частично скрытые спрайты могут быть такими же простыми, как рисование спрайтов в разных слоях (с буфером глубины или без него). Многое возможно, используя графический API, который может быть интуитивным вначале. Возможно, есть более простой способ сделать то, что вам нужно. – Ani

+0

@ananthonline спасибо за ваш совет :) – Kasyx

ответ

2

Нельзя использовать классы System.Drawing. Они работают с изображениями, которые находятся в системной ОЗУ. Вместо этого используйте XNA для управления текстурой, которая находится в памяти графического процессора.

Вы можете использовать SetRenderTarget(), чтобы настроить текстуру как цель рендеринга. Это вызовет дальнейшие вызовы рисования, которые будут выполняться на текстуре. Таким образом, вы можете нарисовать все на текстуре. Тем не менее, у вас не будет методов рисования кругов, квадратов и т. Д. Чтобы достичь этого, вы должны либо создать вершинные буферы с соответствующей геометрией, либо использовать шаблон спрайта.

+0

Вы обратили мое внимание на важную вещь: рисование ее на графическом процессоре. Спасибо. – Kasyx

Смежные вопросы