Demos (master): trivial/tri-z-clip: test near/far triangle clipping

Brian Paul brianp at kemper.freedesktop.org
Wed Jan 9 18:03:33 UTC 2013


Module: Demos
Branch: master
Commit: b2d8a968d7bfac141715865c3dbbf4b7d27c284d
URL:    http://cgit.freedesktop.org/mesa/demos/commit/?id=b2d8a968d7bfac141715865c3dbbf4b7d27c284d

Author: Brian Paul <brianp at vmware.com>
Date:   Wed Jan  9 09:50:26 2013 -0800

trivial/tri-z-clip: test near/far triangle clipping

---

 src/trivial/CMakeLists.txt |    1 +
 src/trivial/Makefile.am    |    1 +
 src/trivial/tri-z-clip.c   |   77 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 79 insertions(+), 0 deletions(-)

diff --git a/src/trivial/CMakeLists.txt b/src/trivial/CMakeLists.txt
index 267fa23..ed6445b 100644
--- a/src/trivial/CMakeLists.txt
+++ b/src/trivial/CMakeLists.txt
@@ -172,6 +172,7 @@ set (targets
 	tri-viewport
 	tri-z-9
 	tri-z
+	tri-z-clip
 	tri-z-eq
 	vbo-drawarrays
 	vbo-drawarrays-2101010
diff --git a/src/trivial/Makefile.am b/src/trivial/Makefile.am
index 40e8d0c..2543068 100644
--- a/src/trivial/Makefile.am
+++ b/src/trivial/Makefile.am
@@ -184,6 +184,7 @@ bin_PROGRAMS = \
 	tri-viewport \
 	tri-z-9 \
 	tri-z \
+	tri-z-clip \
 	tri-z-eq \
 	vbo-drawarrays \
 	vbo-drawarrays-2101010 \
diff --git a/src/trivial/tri-z-clip.c b/src/trivial/tri-z-clip.c
new file mode 100644
index 0000000..c96b875
--- /dev/null
+++ b/src/trivial/tri-z-clip.c
@@ -0,0 +1,77 @@
+/** Test Z-axis clipping of a triangle */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "glut_wrap.h"
+
+
+static GLboolean ztest = GL_FALSE;
+
+
+static void
+Reshape(int width, int height)
+{
+    glViewport(0, 0, width, height);
+    glMatrixMode(GL_PROJECTION);
+    glLoadIdentity();
+    glOrtho(-1.0, 1.0, -1.0, 1.0, 2.0, 10.0);
+    glMatrixMode(GL_MODELVIEW);
+    glTranslatef(0, 0, -6.0);
+}
+
+
+static void
+Key(unsigned char key, int x, int y)
+{
+   if (key == 'z') {
+      ztest = !ztest;
+      printf("ztest = %d\n", ztest);
+      fflush(stdout);
+   }
+   else if (key == 27) {
+      exit(1);
+   }
+   glutPostRedisplay();
+}
+
+
+static void
+Draw(void)
+{
+   glClearColor(0.5, 0.5, 0.5, 1.0);
+   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
+
+   if (ztest)
+      glEnable(GL_DEPTH_TEST);
+   else
+      glDisable(GL_DEPTH_TEST);
+
+   glBegin(GL_TRIANGLES);
+   glColor3f(0, 0, 1); 
+   glVertex3f(-0.5, 0.7, -10.0);
+   glColor3f(1, 0, 0); 
+   glVertex3f(-0.5, -0.7, -10.0);
+   glColor3f(0, 1, 0); 
+   glVertex3f(1.0,  0.0, 12.0);
+   glEnd();
+
+   glutSwapBuffers();
+}
+
+
+int
+main(int argc, char **argv)
+{
+    glutInit(&argc, argv);
+    glutInitWindowPosition(0, 0);
+    glutInitWindowSize(250, 250);
+    glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
+    glutCreateWindow(*argv);
+
+    glutReshapeFunc(Reshape);
+    glutKeyboardFunc(Key);
+    glutDisplayFunc(Draw);
+    glutMainLoop();
+    return 0;
+}




More information about the mesa-commit mailing list