Вопрос по opengl – Буфер глубины в OpenGL

9

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

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

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

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

alt text alt text

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

Ваш Ответ

2   ответа
12

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

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

7

окнами? Например, для использования glut вам может понадобиться: glutInitDisplayMode (GLUT_DEPTH | ....);

вQGLFormat объект, вы должны быть в состоянии проверить, включен ли буфер глубины с помощьюdepth а такжеsetDepth методы.
Я использую qt для своего оконного инструментария. Я не знаю ни о какой подобной функции. Знаете ли вы, есть ли кто-то, кого я должен вызывать simmilar, чтобы перенастроить функцию. DHamrick
Благодарю. Этот ответ спас мой день.

Похожие вопросы