What is the purpose of GL_COLOR_BUFFER_BIT and GL_DEPTH_BUFFER_BIT?

GL_COLOR_BUFFER_BIT and GL_DEPTH_BUFFER_BIT aren't functions, they're constants. You use them to tell glClear() which buffers you want it to clear - in your example, the depth buffer and the "buffers currently enabled for color writing". You can also pass GL_ACCUM_BUFFER_BIT to clear the accumulation buffer and/or GL_STENCIL_BUFFER_BIT to clear the stencil buffer.

The actual values of the constants shouldn't matter to you when using the library - the important implementation detail is that the binary representations for each constant don't overlap with each other. It's that characteristic that lets you pass the bitwise OR of multiple constants to a single call to glClear().

Check out the glClear() documention for more details.


A call to glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) clears the OpenGL color and depth buffers (or any other buffer or combination of buffers). OpenGL being a state machine, it is good practice to start each frame with a clean slate.

Tags:

Opengl