How to use the depth buffer?

Hello,

I wrote a programm with a few triangles rotating around a point. I want hidden triangles(trinagles which are obscured by triangles in front of them) to be removed. I tried to use the depth buffer to do this, but when I enable
GL_DEPTH_TEST, my triangles all start to flicker and the screen output looks rather strange. My code looks something like that(I am using glut):
//Start of Pseudo-Code
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
//…
glEnable(GL_DEPTH_TEST);
//…
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
Draw_the_triangles();
glutSwapBuffers();
//End of Pseudo-Code

I hope anyone can help.

Thanks,
Martin

I encountered this problem when I had glEnable(GL_DEPTH_TEST) inside my Render() function once. When I moved it to an Initialize() function that was only called once it smoothed out my framerate considerably.

There might be other things you only need to call once.

Hope this helps

Make sure VSync is enabled otherwise you will see a lot of tearing/flicker for just a couple of polygons.

I always have vsync turned on except when I want to benchmark stuff.

I am only calling glEnable(GL_DEPTH_TEST)once.
I copied my display() code into my own engine code (not yet very sophisticated)and it works perfectly!? Altough it works now, it would be interesting to know why it had not worked with GLUT.

you need to:

  • enable depth test
  • specify a proper depth function
  • clear the depth buffer as well when clearing the framebuffer
  • and do so every frame before drawing.

then it should work.

Jan