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