Hello all,
I’m trying to draw a cube, but the result is wrong. Some faces that should be hidden aren’t. The attached image shows that effect.
The used environment is Qt, but it’s almost the same.
glEnable(GL_MULTISAMPLE);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glClearDepth( 1.0f );
....
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glViewport(0, 0, width(), height());
glMatrixMode(GL_PROJECTION);
glLoadMatrixd(projection);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0);
glMultMatrixd(modelview);
glBegin( GL_QUADS ); /* Draw A Quad */
glColor3f( 0.0f, 1.0f, 0.0f ); /* Set The Color To Green */
glVertex3f( 1.0f, 1.0f, -1.0f ); /* Top Right Of The Quad (Top) */
glVertex3f( -1.0f, 1.0f, -1.0f ); /* Top Left Of The Quad (Top) */
glVertex3f( -1.0f, 1.0f, 1.0f ); /* Bottom Left Of The Quad (Top) */
glVertex3f( 1.0f, 1.0f, 1.0f ); /* Bottom Right Of The Quad (Top) */
glColor3f( 1.0f, 0.5f, 0.0f ); /* Set The Color To Orange */
glVertex3f( 1.0f, -1.0f, 1.0f ); /* Top Right Of The Quad (Botm) */
glVertex3f( -1.0f, -1.0f, 1.0f ); /* Top Left Of The Quad (Botm) */
glVertex3f( -1.0f, -1.0f, -1.0f ); /* Bottom Left Of The Quad (Botm) */
glVertex3f( 1.0f, -1.0f, -1.0f ); /* Bottom Right Of The Quad (Botm) */
glColor3f( 1.0f, 0.0f, 0.0f ); /* Set The Color To Red */
glVertex3f( 1.0f, 1.0f, 1.0f ); /* Top Right Of The Quad (Front) */
glVertex3f( -1.0f, 1.0f, 1.0f ); /* Top Left Of The Quad (Front) */
glVertex3f( -1.0f, -1.0f, 1.0f ); /* Bottom Left Of The Quad (Front) */
glVertex3f( 1.0f, -1.0f, 1.0f ); /* Bottom Right Of The Quad (Front) */
glColor3f( 1.0f, 1.0f, 0.0f ); /* Set The Color To Yellow */
glVertex3f( 1.0f, -1.0f, -1.0f ); /* Bottom Left Of The Quad (Back) */
glVertex3f( -1.0f, -1.0f, -1.0f ); /* Bottom Right Of The Quad (Back) */
glVertex3f( -1.0f, 1.0f, -1.0f ); /* Top Right Of The Quad (Back) */
glVertex3f( 1.0f, 1.0f, -1.0f ); /* Top Left Of The Quad (Back) */
glColor3f( 0.0f, 0.0f, 1.0f ); /* Set The Color To Blue */
glVertex3f( -1.0f, 1.0f, 1.0f ); /* Top Right Of The Quad (Left) */
glVertex3f( -1.0f, 1.0f, -1.0f ); /* Top Left Of The Quad (Left) */
glVertex3f( -1.0f, -1.0f, -1.0f ); /* Bottom Left Of The Quad (Left) */
glVertex3f( -1.0f, -1.0f, 1.0f ); /* Bottom Right Of The Quad (Left) */
glColor3f( 1.0f, 0.0f, 1.0f ); /* Set The Color To Violet */
glVertex3f( 1.0f, 1.0f, -1.0f ); /* Top Right Of The Quad (Right) */
glVertex3f( 1.0f, 1.0f, 1.0f ); /* Top Left Of The Quad (Right) */
glVertex3f( 1.0f, -1.0f, 1.0f ); /* Bottom Left Of The Quad (Right) */
glVertex3f( 1.0f, -1.0f, -1.0f ); /* Bottom Right Of The Quad (Right) */
glEnd( );
glLineWidth(3.0);
glBegin(GL_LINES);
glColor3f(1.0f, 0.0f, 1.0f);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(1.0, 0.0, 0.0);
glColor3f(1.0f, 0.0f, 1.0f);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(-1.0, 0.0, 0.0);
glColor3f(0.0f, 1.0f, 0.0f);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, 1.0, 0.0);
glColor3f(0.0f, 1.0f, 0.0f);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, -1.0, 0.0);
glColor3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, 0.0, 1.0);
glColor3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, 0.0, -1.0);
glEnd();
swapBuffers();
Could somebody help me, please?
Thanks!