2010-09-17 2 views
0

Старался заставить трафарет работать в моем приложении. Я использую Sprites для отображения содержимого на устройстве. Контент может представлять собой фильмы, изображения или текст.Не удалось получить трафарет для работы

Могу ли я установить буфер трафарета с помощью этих спрайтов, которые можно использовать в последующих проходах для трафаретной печати других спрайтов?

Я даже не могу трафарет из любого спрайта, установив StencilFunction = Compare.Never! Что-то не так, что я мог бы делать?

Я уже провел почти целый день, проверяя сообщения, связанные с трафаретами в MDX, но просто не мог заставить его работать.

Бит больше поисков дал мне технику, в которой мы рисуем силуэт фигур, добавляемых в буфер трафарета. Это действительно необходимо в моем случае? Я просто хочу использовать Sprites и добавить их в буфере трафарета для трассировки других спрайтов.

EDIT: ОК .. Так что я понял, как это сделать. На этот пост - http://www.gamedev.net/community/forums/viewreply.asp?ID=1999276

Но теперь спрайт игнорирует значения альфа и непрозрачные спрайты. Подобно эффекту, который мы получаем, когда для альфа-смешивания установлено значение false. Есть идеи?

ответ

0

Итак, я, наконец, понял это. Все это связано с методом Sprites и его Begin().

Sprite.Begin() изменит RenderState и отключит трафарет. Мы можем предотвратить это, установив флаг SpriteFlags.DoNotModifyRenderState, но тогда альфа-смешивание не поддерживается при рисовании спрайтов.

То, что я сделал сейчас, просто вызвал Sprite.Begin() без установленного значка SpriteFlags.DoNotModifyRenderState. А перед вызовом Sprite.Draw() включите трафарет на устройстве.

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