Вопрос

Когда объекты из списка вызовов пересекают ближнюю плоскость, я вижу мерцание... что делать?

Я использую OpenGL и SDL.

Да, это двойная буферизация.

Это было полезно?

Решение

Звучит так, будто у тебя з-драка.

«Z-борьба — это явление в 3D-рендеринге, которое возникает, когда два или более примитивов имеют одинаковые значения в z-буфере, и особенно распространено среди копланарных полигонов.Эффект приводит к тому, что псевдолупильные пиксели оказываются с цветом одного многоугольника или другого нетерминированного способа, варьируясь по мере анимированной сцены, в результате чего один многоугольник «выиграл» тест Z, затем другой и так далее. " (От Википедия)

Более подробную информацию о проблеме вы можете получить в Часто задаваемые вопросы по OpenGL.

glPolygonOffset может помочь, но вы также можете навлечь на себя проблемы.Том Форсайт дает хорошее объяснение в своей книге. Часто задаваемые вопросы Примечание:Там говорится о ZBIAS, но это всего лишь эквивалент DirectX.

Другие советы

Проблема заключалась в том, что моя функция вращения имела некоторые ошибки с плавающей запятой, которые испортили мою матрицу model_view.

Никто из вас не мог об этом догадаться, извините за трату вашего времени.

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

Попробуйте расположить ближнюю плоскость отсечения немного дальше:например, с помощью gluPerspective -> третий параметр zРядом http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/perspective.html

Ах, ты имел в виду около самолет.:)

Ну... еще одна вещь при рисовании многоугольников в одной плоскости - использовать glPolygonOffset

Из описания

  glPolygonOffset is useful for rendering hidden-line images,
  for applying decals to surfaces, and for rendering solids
  with highlighted edges.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top