Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 3 of 3

Thread: Strange Problem GL_DEPTH_TEST

  1. #1
    Junior Member Newbie
    Join Date
    Mar 2013
    Posts
    2

    Strange Problem GL_DEPTH_TEST

    Hello there ! My name is Kliment and i came here to ask you a question about the Open GL ...
    I have a very strange problem ....So the problem is that i am drawing 4 polygons with different color in the 3d space but i do not know why these polygons appear to be drawn one after another .... For example if we draw polygon at 0,0,0 and after that one at 0,0,-1 in theory when enabling GL_DEPTH_TEST the second polygon must appear behind the first one , but it does not .... Here is my code take a look at it please if you have to compile it ....but please help me solve this ...

    #include <windows.h>
    #include <gl\gl.h>
    #include <gl\glu.h>
    #include <gl\glut.h>

    void Init (void)
    {
    glClearColor (0.0,0.0,0.0,1.0);
    glShadeModel (GL_SMOOTH);

    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_ALWAYS);

    glEnable(GL_BLEND); //enabling or disabling this does not make any difference
    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
    }

    void Display (void)
    {
    glClear (GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glLoadIdentity ();

    gluLookAt (7.0,1.0,-7.0, 10.0,0.5,-10.0, 0.0,1.0,0.0);

    /////////////////////Start Draw

    //The red one is first
    glPushMatrix ();
    glTranslatef (10.0,0.0,-10.0);
    glColor4f (1.0,0.0,0.0,1.0);
    glBegin (GL_POLYGON);
    glVertex3f (0.0,0.0,0.0);
    glVertex3f (1.0,0.0,0.0);
    glVertex3f (1.0,1.0,0.0);
    glVertex3f (0.0,1.0,0.0);
    glEnd ();
    glPopMatrix ();

    //Second the green one
    glPushMatrix ();
    glTranslatef (9.0,0.0,-10.0);
    glColor4f (0.0,1.0,0.0,1.0);
    glBegin (GL_POLYGON);
    glVertex3f (0.0,0.0,0.0);
    glVertex3f (1.0,0.0,0.0);
    glVertex3f (1.0,1.0,0.0);
    glVertex3f (0.0,1.0,0.0);
    glEnd ();
    glPopMatrix ();

    //The blue one
    glPushMatrix ();
    glTranslatef (10.0,0.0,-10.0);
    glRotatef (90,0.0,1.0,0.0);
    glColor4f (0.0,0.0,1.0,1.0);
    glBegin (GL_POLYGON);
    glVertex3f (0.0,0.0,0.0);
    glVertex3f (1.0,0.0,0.0);
    glVertex3f (1.0,1.0,0.0);
    glVertex3f (0.0,1.0,0.0);
    glEnd ();
    glPopMatrix ();

    //the yellow one
    glPushMatrix ();
    glTranslatef (10.0,0.0,-9.0);
    glRotatef (90,0.0,1.0,0.0);
    glColor4f (1.0,1.0,0.0,1.0);
    glBegin (GL_POLYGON);
    glVertex3f (0.0,0.0,0.0);
    glVertex3f (1.0,0.0,0.0);
    glVertex3f (1.0,1.0,0.0);
    glVertex3f (0.0,1.0,0.0);
    glEnd ();
    glPopMatrix ();

    glutSwapBuffers ();
    glutPostRedisplay ();
    }

    void Reshape (int w,int h)
    {
    glViewport (0,0,(GLsizei)w,(GLsizei)h);

    glMatrixMode (GL_PROJECTION);
    glLoadIdentity ();
    gluPerspective (40,1,0,30);
    glMatrixMode (GL_MODELVIEW);
    }

    /////////////////////////////////////////////////////

    int main (int argc,char *argv[])
    {
    glutInit (&argc,argv);
    glutInitDisplayMode (GLUT_DOUBLE|GLUT_DEPTH|GLUT_RGBA);
    glutInitWindowSize (500,500);
    glutCreateWindow ("Open GL TEST");
    Init ();
    glutDisplayFunc (Display);
    glutReshapeFunc (Reshape);
    glutMainLoop();

    return 0;
    }

  2. #2
    Junior Member Regular Contributor
    Join Date
    Mar 2012
    Posts
    129
    Your depth function is set to GL_ALWAYS, so it will always pass the depth test. Make it GL_LESS or GL_LEQUAL.

  3. #3
    Junior Member Newbie
    Join Date
    Mar 2013
    Posts
    2
    No GL_LESS...it dosen't work ...neither GL_LEQUAL ...But if i am not wrong if there is no glDepthFunc() with a parameter ..its set to default GL_LESS right ?

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •