Press <space> to reset limit/bias values, clean-up limit/bias printf
[mesa.git] / progs / demos / arbocclude.c
index 30d95dfd6734718f3fe299e907da5a4430c2fcb9..ddbb1f1b759bb37b19ec8b75d2d805e449be8fa9 100644 (file)
@@ -32,6 +32,7 @@
 #define GL_GLEXT_PROTOTYPES
 #include <GL/glut.h>
 
+#define TEST_DISPLAY_LISTS 0
 
 static GLboolean Anim = GL_TRUE;
 static GLfloat Xpos = 0;
@@ -114,7 +115,15 @@ static void Display( void )
    glScalef(0.3, 0.3, 1.0);
    glRotatef(-90.0 * Xpos, 0, 0, 1);
 
+#if defined(GL_ARB_occlusion_query)
+#if TEST_DISPLAY_LISTS
+   glNewList(10, GL_COMPILE);
    glBeginQueryARB(GL_SAMPLES_PASSED_ARB, OccQuery);
+   glEndList();
+   glCallList(10);
+#else
+   glBeginQueryARB(GL_SAMPLES_PASSED_ARB, OccQuery);
+#endif
 
    glColorMask(0, 0, 0, 0);
    glDepthMask(GL_FALSE);
@@ -126,7 +135,14 @@ static void Display( void )
    glVertex3f(-1,  1, 0);
    glEnd();
 
+#if TEST_DISPLAY_LISTS
+   glNewList(11, GL_COMPILE);
+   glEndQueryARB(GL_SAMPLES_PASSED_ARB);
+   glEndList();
+   glCallList(11);
+#else
    glEndQueryARB(GL_SAMPLES_PASSED_ARB);
+#endif
 
    do {
       /* do useful work here, if any */
@@ -137,6 +153,7 @@ static void Display( void )
    /* turn off occlusion testing */
    glColorMask(1, 1, 1, 1);
    glDepthMask(GL_TRUE);
+#endif /* GL_ARB_occlusion_query */
 
    /* draw the orange rect, so we can see what's going on */
    glColor3f(0.8, 0.5, 0);
@@ -158,6 +175,7 @@ static void Display( void )
    glLoadIdentity();
 
    glColor3f(1, 1, 1);
+#if defined(GL_ARB_occlusion_query)
    sprintf(s, " %4d Fragments Visible", passed);
    glRasterPos3f(-0.50, -0.7, 0);
    PrintString(s);
@@ -165,6 +183,10 @@ static void Display( void )
       glRasterPos3f(-0.25, -0.8, 0);
       PrintString("Fully Occluded");
    }
+#else
+   glRasterPos3f(-0.25, -0.8, 0);
+   PrintString("GL_ARB_occlusion_query not available at compile time");
+#endif /* GL_ARB_occlusion_query */
 
    glutSwapBuffers();
 }
@@ -223,14 +245,21 @@ static void Init( void )
       exit(-1);
    }
 
+#if defined(GL_ARB_occlusion_query)
    glGetQueryivARB(GL_SAMPLES_PASSED_ARB, GL_QUERY_COUNTER_BITS_ARB, &bits);
    if (!bits) {
       printf("Hmmm, GL_QUERY_COUNTER_BITS_ARB is zero!\n");
       exit(-1);
    }
+#endif /* GL_ARB_occlusion_query */
+
+   glGetIntegerv(GL_DEPTH_BITS, &bits);
+   printf("Depthbits: %d\n", bits);
 
+#if defined(GL_ARB_occlusion_query)
    glGenQueriesARB(1, &OccQuery);
-   assert( glIsQueryARB(OccQuery) );
+   assert(OccQuery > 0);
+#endif /* GL_ARB_occlusion_query */
 
    glEnable(GL_DEPTH_TEST);
 }