2013-11-11 3 views
-1

Это то, что я вижу: Lines across the model«Странные» Артефакты С Blending

Чтобы обеспечить некоторую перспективу изображения, тор позади модели. Модель прозрачна. Эти строки появляются на модели. Я не хочу, чтобы эти строки появлялись.

Может кто-нибудь объяснить, что я вижу? Я не знаю, что искать. Я пробовал:

  • Странные линии
  • артефакты линии
  • Артефакты

и т.д. и т.п., но я не мог найти ничего соответствующего. Я понимаю, что мой вопрос расплывчатый, но, если кто-то может назвать мою проблему, я думаю, что могу определить проблемный код!

+0

у вас могут быть проблемы с z-буфером или что-то, что связано с цветовой полосой. –

+0

@ DanielMošmondor, глядя в них прямо сейчас. Благодаря! Опубликуйте мои результаты. –

+0

@ godel9, я понимаю. Я бы хотел опубликовать фрагмент/SSCCE, но я не знаю, что вызывает мою проблему. Во всяком случае, в моем обработчике ключей, когда нажимается «b», я разрешаю смешивание и вызываю 'glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)'. Если какой-либо другой ключ нажат, я отключу смешение. –

ответ

1

Если вы делаете прозрачные пленки, вам нужно иметь в виду разные вещи. Обычно вы выполняете рендеринг в OpenGL с проверкой и записью z-буфера. Итак, если лицо визуализируется, OpenGL смотрит, какие пиксели видны, проверяя их против z-буфера. Если он виден, он нарисован с помощью параметра смешивания, а его значение z записывается в z-буфер. Если нет, это отбрасывается.

Если вы не визуализируете свои лица в правильном порядке z (от начала до выхода из направления просмотра), они отображаются в том порядке, в котором они поступают в конвейер.

Артефакты появляются, когда, например, для некоторых областей пиксели обратных поверхностей отображаются перед наложенными пикселями лицевых поверхностей, и если для некоторых областей пиксели передних поверхностей отображаются перед одной из задних поверхностей. Поэтому для некоторых областей вашего объекта у вас есть смешение background - backface - frontface, и для некоторых областей у вас есть только background - forntface.

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

+0

Хорошо! В этом есть смысл. Но для этих сфер я просто использую gluSphere(). Итак, как я узнаю, какие лица отображаются в каком порядке? –

+0

Вы не узнаете. Прозрачные пленки - одна из сложнейших частей в GC. Существуют различные методы рендеринга прозрачных пленок [Средневзвешенное значение или Двойной глубинный пилинг] (http://developer.download.nvidia.com/SDK/10/opengl/src/dual_depth_peeling/doc/DualDepthPeeling.pdf). Выполнение z-сортировки действительно экспансивное (Существуют подходы к решению этого «Деформации треугольных треугольников [Ge Chen 2012]», но это также непростая задача). Кстати, используете ли вы конвейер с фиксированной функцией ('glBegin',' glEnd' ..), если вам нужно переключиться, чтобы узнать, как работают шейдеры, поскольку конвейер с фиксированной функцией устарел. –

+0

Хорошо, что вы не знаете, это не совсем так. Они передаются в порядке «gluSphere» создает их. –

Смежные вопросы