Глубинный буфер в OpenGL

Я пытаюсь сделать серию прямоугольников с использованием OpenGL, но некоторые из них, которые должны появиться под прямоугольником, появляются над ним.

Чтобы включить функцию глубины, я использую

glClearDepth(1.0f);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);

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

alt textalt text

Как вы можете видеть в верхнем изображении, некоторые зеленые прямоугольники появляются над синими. Любая идея, почему это происходит и что я могу сделать, чтобы исправить это? Может ли это иметь какое-то отношение к порядку, в котором я рисую прямоугольники?

Ответ 1

Когда вы очищаете свой буфер цветов, вы также очищаете буфер глубины?

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

Вы уверены, что изображение не правильное? Некоторые из этих зеленых квадратов на самом деле выглядят выше, чем синие.

Ответ 2

Вы включили буфер глубины в любой системе окон, которую используете? Например, используя перегиб, вам может потребоваться: glutInitDisplayMode (GLUT_DEPTH |....);