Буфер глубины в OpenGL - PullRequest
       45

Буфер глубины в OpenGL

9 голосов
/ 26 июня 2009

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

Для включения функции глубины я использую

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

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

alt text alt text

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

Ответы [ 2 ]

12 голосов
/ 26 июня 2009

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

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

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

7 голосов
/ 26 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...