XNA SpriteBatch игнорирует мои параметры отбраковки?

У меня проблема с объектом XNA SpriteBatch.

Когда я рисую полупрозрачный элемент перед другими элементами, другие элементы полностью скрываются, пока полупрозрачный элемент не станет полностью прозрачным. Это действительно расстраивает, потому что я пытаюсь создать эффект постепенного появления и исчезновения.

Batch.Instance.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.Default, RasterizerState.CullNone, null);

Вот как я запускаю свой SpriteBatch. Как видите, я установил CullNone, но оказалось, что он по-прежнему выполняет Z-выборку.

Как я могу предотвратить это?


person Mathias Lykkegaard Lorenzen    schedule 26.06.2011    source источник


Ответы (1)


Z-выборка является свойством DepthStencilState. Чтобы отключить его, вам нужно использовать DepthStencilState.None. Отбор, выполненный RasterizerState, осуществляется в порядке намотки треугольника. Что я уже объяснил вам подробно< /em> здесь.

Вы не можете использовать буфер глубины с прозрачностью. Вы можете использовать альфа-тестирование в качестве обходного пути для «вырезания альфа-канала». Однако для полупрозрачных объектов (например, когда они появляются и исчезают) рисование в порядке глубины — ваш единственный вариант.

Что я уже предлагал вам здесь. Вы так и не ответили на мой вопрос: с какой стати вы так рисуете свой графический интерфейс?

Для получения дополнительной информации: я более подробно рассказал о прозрачности и Z-буфере. здесь.

person Andrew Russell    schedule 26.06.2011