Свойство AlphaTestEffect.Projection - PullRequest
       18

Свойство AlphaTestEffect.Projection

1 голос
/ 16 января 2012

Я просматриваю этот урок, чтобы смешивать различные текстуры в зависимости от типов пикселей, которые я хочу передать: http://www.crappycoding.com/tag/xna/page/2/

и до сих пор, я думаю, я понимаю всю концепцию, за исключением нескольких строк при создании объекта AlphaTestEffect, поскольку дано очень мало объяснений, и я понятия не имею, для чего он нужен и почему он настроен таким образом .

Matrix projection = Matrix.CreateOrthographicOffCenter(0, PlanetDataSize, PlanetDataSize, 0, 0, 1);
Matrix halfPixelOffset = Matrix.CreateTranslation(-0.5f, -0.5f, 0);

alphaTestEffect.Projection = halfPixelOffset * projection;

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

веселит Lucas

1 Ответ

0 голосов
/ 16 января 2012

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

http://blogs.msdn.com/b/shawnhar/archive/2010/04/05/spritebatch-and-custom-shaders-in-xna-game-studio-4-0.aspx

Это объясняется, если вы прокрутите немного вниз:

"Этот код настраивает BasicEffect для репликации системы координат SpriteBatch по умолчанию:"

Камера SpriteBatch по умолчанию представляет собой простую ортогональную проекцию с смещением в полпикселя для лучшего отображения 2D-текстур. Это можно объяснить здесь:

http://drilian.com/2008/11/25/understanding-half-pixel-and-half-texel-offsets/

...