XNA 4.0: сбои ландшафта, вызванные SpriteBatch

Я пытаюсь реализовать столкновение с ландшафтом в XNA, поэтому я добавил динамический текст, который позволяет мне проверить правильность вычислений. Все было нормально, пока я не позвонил:

spriteBatch.Begin(); spriteBatch.End();

or

spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend); spriteBatch.End();

С этими инструкциями террейн немного глючит, когда я удаляю эти две строки из своего кода, все возвращается в норму (но это означает, что я не могу рисовать HUD)

Кто-нибудь знает, что может быть причиной этого и как мне это исправить?

экраны:

с включенным пакетом спрайтов

с отключенным пакетом спрайтов


person thormond    schedule 08.05.2013    source источник


Ответы (1)


это из-за spritebatch меняет состояния графического устройства...

перед рисованием ландшафта вы должны сохранить правильные состояния рендеринга...

обычно вам нужно установить правильные RasterizerState и DepthStencilState.

Общие значения: RasterizarState.CullNone и DepthStencilState.Default.

person Blau    schedule 09.05.2013
comment
оказалось, я сохранил RasterizerState, но мне не хватало другого, эта строка сделала свое дело: device.DepthStencilState = DepthStencilState.Default; спасибо за совет - person thormond; 09.05.2013