summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Paul <brianp@vmware.com>2013-01-09 09:50:26 -0800
committerBrian Paul <brianp@vmware.com>2013-01-09 10:58:14 -0700
commitb2d8a968d7bfac141715865c3dbbf4b7d27c284d (patch)
treec9958b9ede5a3586af4e4be2e454f495a9f32da3
parent6eef979a5488dab01088412f88374b2ea9d615cd (diff)
trivial/tri-z-clip: test near/far triangle clipping
-rw-r--r--src/trivial/CMakeLists.txt1
-rw-r--r--src/trivial/Makefile.am1
-rw-r--r--src/trivial/tri-z-clip.c77
3 files changed, 79 insertions, 0 deletions
diff --git a/src/trivial/CMakeLists.txt b/src/trivial/CMakeLists.txt
index 267fa233..ed6445bc 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 40e8d0c0..2543068e 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 00000000..c96b8759
--- /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;
+}