DHamrick
DHamrick

Reputation: 8488

Depth Buffer in OpenGL

I am trying to draw a series of rectangles using OpenGL but some of the ones that should appear below a rectangle appear above it.

To enable the depth function I am using

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

I am using gluLookAt at the begining of each draw. Here is an image of the problem. The blue rectangles are positioned with higher y values than the green rectangles.

alt text alt text

As you can see in the top image some of the green rectangles appear above the blue ones. Any idea why this is happening and what I can do to fix it? Could it have something to do with the order that I'm drawing the rectangles?

Upvotes: 9

Views: 21510

Answers (2)

Gordon Childs
Gordon Childs

Reputation: 36072

When you clear your colour buffer are you also clearing the depth buffer?

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

Are you sure the image isn't correct? Some of those green squares actually
do look higher than the blue ones.

Upvotes: 12

Christopher
Christopher

Reputation: 9084

Did you enable the depth buffer in whatever windowing system you are using? For example, using glut you might need to: glutInitDisplayMode(GLUT_DEPTH | ....);

Upvotes: 7

Related Questions