OSDN Git Service

press 'f' to cycle through depth test funcs
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 5 Sep 2008 18:59:40 +0000 (12:59 -0600)
committerBrian Paul <brian.paul@tungstengraphics.com>
Thu, 11 Sep 2008 16:39:27 +0000 (10:39 -0600)
progs/trivial/tri-z.c

index ae25900..c8296a9 100644 (file)
 
 #include <GL/glut.h>
 #include <stdlib.h>
+#include <stdio.h>
 
 static int leftFirst = GL_TRUE;
 
+static struct { GLenum func; const char *str; } funcs[] = 
+   {
+      { GL_LESS, "GL_LESS" },
+      { GL_LEQUAL, "GL_LEQUAL" },
+      { GL_GREATER, "GL_GREATER" },
+      { GL_GEQUAL, "GL_GEQUAL" },
+      { GL_EQUAL, "GL_EQUAL" },
+      { GL_NOTEQUAL, "GL_NOTEQUAL" },
+      { GL_ALWAYS, "GL_ALWAYS" },
+      { GL_NEVER, "GL_NEVER" },
+   };
+
+#define NUM_FUNCS (sizeof(funcs) / sizeof(funcs[0]))
+
+static int curFunc = 0;
+
+
 static void init(void)
 {
    glEnable(GL_DEPTH_TEST);
@@ -72,6 +90,9 @@ void display(void)
 {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
+   printf("GL_DEPTH_FUNC = %s\n", funcs[curFunc].str);
+   glDepthFunc(funcs[curFunc].func);
+
    if (leftFirst) {
       drawLeftTriangle();
       drawRightTriangle();
@@ -99,6 +120,11 @@ void reshape(int w, int h)
 void keyboard(unsigned char key, int x, int y)
 {
    switch (key) {
+      case 'f':
+      case 'F':
+         curFunc = (curFunc + 1) % NUM_FUNCS;
+         glutPostRedisplay();  
+         break;
       case 't':
       case 'T':
          leftFirst = !leftFirst;