Z-борьба между строками в XNA - PullRequest
1 голос
/ 11 июля 2009

У меня возникла проблема, когда при рисовании сетки с помощью LineList и другой (большей) сетки, перекрывающей ее, они мерцают из-за z-боя. Использование DepthBias уменьшит проблему такого рода, когда полигоны и линии перекрываются, но, по-видимому, не работает при рисовании линий в двух отдельных вызовах DrawIndexedPrimitives.

В настоящее время я «исправил» его, добавив к положению второй сетки небольшой вектор, указывающий на камеру, чтобы имитировать DepthBias, но проблема все еще возникает, когда камера находится далеко от сеток.

Есть ли лучший способ обойти эту проблему?

Ответы [ 2 ]

0 голосов
/ 08 июля 2010

К сожалению, это естественное поведение из-за ограниченной точности 32-битных чисел с плавающей запятой (используемых буфером глубины). Вы можете либо минимально перевести один набор линий (как Вы делаете сейчас) и попытаться выбрать Ваши плоскости отсечения как можно ближе друг к другу (как упомянул Роб), или:

  1. Отключите буфер глубины, установив device.RenderState.CompareFunction = CompareFunction.Allways, а не отключив буфер!
  2. Нарисуй все свои линии.
  3. Снова включите буфер глубины, отменив изменения в шаге 1.
  4. Нарисуй всю свою другую геометрию.
0 голосов
/ 08 июля 2010

Из того, что я слышал, вы должны взглянуть на свои самолеты. Пример потока: xna.com

Редактировать: Не знаю, о сетках, но вы всегда можете попробовать! :)

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