Name
glClear — clear buffers to preset values
C Specification
void glClear(GLbitfield mask);Parameters
mask- Bitwise OR of masks that indicate the buffers to be cleared. The three masks are
GL_COLOR_BUFFER_BIT,GL_DEPTH_BUFFER_BIT, andGL_STENCIL_BUFFER_BIT.
Description
glClear sets the bitplane area of the window to values previously selected by glClearColor, glClearDepth, and glClearStencil. Multiple color buffers can be cleared simultaneously by selecting more than one buffer at a time using glDrawBuffer.The pixel ownership test, the scissor test, dithering, and the buffer writemasks affect the operation of
glClear. The scissor box bounds the cleared region. Alpha function, blend function, logical operation, stenciling, texture mapping, and depth-buffering are ignored by glClear.glClear takes a single argument that is the bitwise OR of several values indicating which buffer is to be cleared.The values are as follows:
GL_COLOR_BUFFER_BIT- Indicates the buffers currently enabled for color writing.
GL_DEPTH_BUFFER_BIT- Indicates the depth buffer.
GL_STENCIL_BUFFER_BIT- Indicates the stencil buffer.
Associated Gets
glGet with argumentGL_DEPTH_CLEAR_VALUEglGet with argument
GL_COLOR_CLEAR_VALUEglGet with argument
GL_STENCIL_CLEAR_VALUESee Also
glClearColor, glClearDepth, glClearStencil, glColorMask, glDepthMask, glDrawBuffer, glScissor, glStencilMaskCopyright
Copyright © 1991-2006 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, see http://oss.sgi.com/projects/FreeB/.Example of glClear
void Render()
{
//clear color and depth buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();//load identity matrix
glTranslatef(0.0f,0.0f,-4.0f);//move forward 4 units
glColor3f(0.0f,0.0f,1.0f); //blue color
glBegin(GL_TRIANGLES);//start drawing triangles
glVertex3f(-1.0f,-0.25f,0.0f);//triangle one first vertex
glVertex3f(-0.5f,-0.25f,0.0f);//triangle one second vertex
glVertex3f(-0.75f,0.25f,0.0f);//triangle one third vertex
//drawing a new triangle
glVertex3f(0.5f,-0.25f,0.0f);//triangle two first vertex
glVertex3f(1.0f,-0.25f,0.0f);//triangle two second vertex
glVertex3f(0.75f,0.25f,0.0f);//triangle two third vertex
glEnd();//end drawing of triangles
}
void DrawIt()
{
unsigned char *pBuffer = new unsigned char[300*300*4];
// Drawing OpenGL Geometry.
//
glClear(GL_COLOR_BUFFER_BIT);
//glPushMatrix();
glScalef(0.5f, 0.5f, 0.5f);
glBegin(GL_TRIANGLES);
glColor3f(1.0f, 0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glColor3f(0.0f, 1.0f, 0.0f);
glVertex3f(1.0f, -1.0f, -1.0f);
glColor3f(0.0f, 0.0f, 1.0f);
glVertex3f(0.0f, 1.0f, -1.0f);
glEnd();
//glPopMatrix();
SwapBuffers(g_hDC);
// Read pixels from color buffer.
//
memset(pBuffer, 0, 300*300*4);
glPixelStorei(GL_PACK_ALIGNMENT, 4);
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
// Choose where to read from.
//
glReadBuffer(GL_FRONT);
glReadPixels((GLdouble)300, (GLdouble)300, 30, 30, GL_RGBA, GL_UNSIGNED_BYTE, pBuffer);
delete[] pBuffer;
return;
}