XNA SpriteBatch вызывает проблемы с BasicEffect - PullRequest
1 голос
/ 04 февраля 2011

Я использую XNA для визуализации некоторых данных и пытаюсь использовать рекламные щиты для данных и spritebatch для рисования текста в HUD.

Для рекламных щитов я использую следующий пример, который прекрасно работает: http://create.msdn.com/en-US/education/catalog/sample/3d_audio

В этом примере есть спрайт с кошкой и собакой, где кошка проходит перед собакой или позади нее, в зависимости от их положения и положения камеры, как и следовало ожидать. Неважно, в каком порядке вызываются Cat.Draw и Dog.Draw. Эти парни взяты из BasicEffect.

Однако, если я добавлю класс, который наследует DrawableGameComponent и использует SpriteBatch, BasicEffect в других компонентах теряет свою глубинную сортировку, и четырехугольники отображаются в порядке вызова. Обратите внимание, что этот компонент добавляется в класс Game через this.Components.Add (...).

Есть ли несовместимость между BasicEffect и SpriteBatch? Проблема возникает всякий раз, когда вызывается SpriteBatch.Begin () / End (). Если я не называю это кошка / собака рендеринга в порядке.

Есть идеи?

1 Ответ

2 голосов
/ 04 февраля 2011

Вам необходимо сбросить некоторые состояния рендеринга, которые изменяет SpriteBatch.

Попробуйте установить их перед вызовами базового эффекта:

GraphicsDevice.BlendState = BlendState.Opaque;
GraphicsDevice.DepthStencilState = DepthStencilState.Default;

Дополнительные сведения о том, какие состояния рендеринга SpriteBatch изменяет: http://blogs.msdn.com/b/shawnhar/archive/2010/06/18/spritebatch-and-renderstates-in-xna-game-studio-4-0.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...