#include int width = 800; int height = 600; void init(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE); glutInitWindowSize(width, height); glutInitWindowPosition(100, 100); glViewport(0,0,width,height); glutCreateWindow("Culling"); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); glOrtho(-2.0, 2.0,-2.0, 2.0, -2.0, 2.0); gluLookAt(0.25,0.5,0.1,0,0,0,0,1,0); //////////////////////////////////////////////////////////////////// glEnable(GL_CULL_FACE); glCullFace(GL_FRONT); //////////////////////////////////////////////////////////////////// } void display(void) { glClearColor(1.0f, 1.0f, 1.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glBegin(GL_QUADS); glColor3f(1.0f, 0.0f, 0.0f); // FRONT glVertex3f(-0.5f, -0.5f, 0.5f); glVertex3f( 0.5f, -0.5f, 0.5f); glVertex3f( 0.5f, 0.5f, 0.5f); glVertex3f(-0.5f, 0.5f, 0.5f); // BACK glVertex3f(-0.5f, -0.5f, -0.5f); glVertex3f(-0.5f, 0.5f, -0.5f); glVertex3f( 0.5f, 0.5f, -0.5f); glVertex3f( 0.5f, -0.5f, -0.5f); glColor3f(0.0f, 1.0f, 0.0f); // LEFT glVertex3f(-0.5f, -0.5f, 0.5f); glVertex3f(-0.5f, 0.5f, 0.5f); glVertex3f(-0.5f, 0.5f, -0.5f); glVertex3f(-0.5f, -0.5f, -0.5f); // RIGHT glVertex3f( 0.5f, -0.5f, -0.5f); glVertex3f( 0.5f, 0.5f, -0.5f); glVertex3f( 0.5f, 0.5f, 0.5f); glVertex3f( 0.5f, -0.5f, 0.5f); glColor3f(0.0f, 0.0f, 1.0f); // BOTTOM // glVertex3f(-0.5f, -0.5f, 0.5f); // glVertex3f(-0.5f, -0.5f, -0.5f); // glVertex3f( 0.5f, -0.5f, -0.5f); // glVertex3f( 0.5f, -0.5f, 0.5f); // to turn around the bottom orientation: define points in different order // glVertex3f( 0.5f, -0.5f, 0.5f); // glVertex3f( 0.5f, -0.5f, -0.5f); // glVertex3f(-0.5f, -0.5f, -0.5f); // glVertex3f(-0.5f, -0.5f, 0.5f); glEnd(); glFlush(); } int main(int argc, char** argv) { init(argc, argv); glutDisplayFunc(display); glutMainLoop(); return 0; }