2008-09-10 4 views
1

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

Im using OpenGL и SDL.

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

ответ

5

Это звучит, как вы получаете Z-бой.

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

Вы можете получить больше информации о проблеме в OpenGL FAQ.

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

0

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

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

Из описания

glPolygonOffset is useful for rendering hidden-line images, 
    for applying decals to surfaces, and for rendering solids 
    with highlighted edges. 
3

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

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

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

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