Я пытаюсь нарисовать карту глубины сцены. Теперь я сделал файл HLSL, подобный файлу: http://www.riemers.net/eng/Tutorials/XNA/Csharp/Series3/Shadow_map.php И все прошло отлично. Однако! Я хочу узнать точное значение каждого пикселя, поэтому вместо рисования на обычной цели рендеринга я создал новую цель рендеринга, которая является Texture2D, как в: http://www.riemers.net/eng/Tutorials/XNA/Csharp/Series3/Render_to_texture.php , а затем я нарисовал ее, используя spritebatch.XNA Depth Map Overlapping Area Area
Тогда! когда я отображать изображения, то первый, то есть, один рисунок непосредственно на экран дает такой результат:
и один, который привлекает к текстуре затем на экран с помощью спрайта дает следующее:
Обратите внимание, что во втором захвате правая рука тела, которая явно находится за корпусом, нарисована так, как будто тело не существует в области перекрытия.
Я думаю, что проблема с упорядочением, так как вершины спереди рисуются сначала текстурой, а более отдаленные - переписывают более близкие, что приводит к наблюдаемому изображению.
Буду признателен за любой ввод.
+1: Полностью согласен. В этом случае я обычно устанавливаю точку останова перед вызовом 'SpriteBatch.Begin()' и проверяю 'DepthStencilState',' BlendState' и 'RasterizerState', а затем сбрасывает их все после вызова' SpriteBatch.End() '. –
работает как шарм! –