XNA SpriteBatch игнорирует мои варианты выбраковки? - PullRequest
0 голосов
/ 26 июня 2011

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

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

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

Так я запускаю SpriteBatch. Как видите, я установил его на CullNone, но, похоже, он все еще выполняет Z-выборку.

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

1 Ответ

3 голосов
/ 26 июня 2011

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

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

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

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

...