Глубинный буфер в OpenGL
Я пытаюсь сделать серию прямоугольников с использованием OpenGL, но некоторые из них, которые должны появиться под прямоугольником, появляются над ним.
Чтобы включить функцию глубины, я использую
glClearDepth(1.0f);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);
Я использую gluLookAt в начале каждой ничьей. Вот образ проблемы. Синие прямоугольники расположены с более высокими значениями y, чем зеленые прямоугольники.
![alt text]()
![alt text]()
Как вы можете видеть в верхнем изображении, некоторые зеленые прямоугольники появляются над синими. Любая идея, почему это происходит и что я могу сделать, чтобы исправить это? Может ли это иметь какое-то отношение к порядку, в котором я рисую прямоугольники?
Ответы
Ответ 1
Когда вы очищаете свой буфер цветов, вы также очищаете буфер глубины?
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Вы уверены, что изображение не правильное? Некоторые из этих зеленых квадратов на самом деле
выглядят выше, чем синие.
Ответ 2
Вы включили буфер глубины в любой системе окон, которую используете? Например, используя перегиб, вам может потребоваться: glutInitDisplayMode (GLUT_DEPTH |....);