Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

glEnable(GL_DEPTH_TEST) - nothing rendered

Tags:

opengl

In OpenGL, I display a simple model. When I enable the depth buffer,

glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);

everything disappears. I read this OpenGL FAQ, but it didn't help me.

My perspective settings are: angle=45deg, near=1, far=40, I put model at (0,0,0) and I place my eye at (0,0,4). Without the Z-buffer, I can see the model.

What could be wrong?

like image 289
Jakub M. Avatar asked Apr 06 '12 10:04

Jakub M.


3 Answers

Did you make sure you clear the depth buffer?

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
                              ^^^^^^^^^^^^^^^^^^^
like image 178
datenwolf Avatar answered Sep 18 '22 23:09

datenwolf


If the other answer does not work, Try what user886079 mentioned in a comment

If the above doesn't work, check your near plane in the gluPerspective, glFrustum, or glOrtho function. Depth buffering doesn't seem to work if it is set to 0.

I had tried almost everything but could not solve the overlapping issue. I had put the near value 0.0f. I changed it to 0.01f and the results now are how it needed to be.

like image 37
user3625178 Avatar answered Sep 18 '22 23:09

user3625178


If the following answers above do not work try the following:

  • If you have GL_CULL_FACE enabled check the winding order of your model's vertices. (LH) vs (RH).
  • If GL_DEPTH_TEST is enabled; then check the planes to your frustum against your model view projection matrix along with the camera's position & view direction.
  • If GL_BLEND is enabled; check the rendering order of your objects in comparison to the z-buffer.
like image 1
Francis Cugler Avatar answered Sep 19 '22 23:09

Francis Cugler