diff options
author | Brian Paul <brianp@vmware.com> | 2013-01-09 09:50:26 -0800 |
---|---|---|
committer | Brian Paul <brianp@vmware.com> | 2013-01-09 10:58:14 -0700 |
commit | b2d8a968d7bfac141715865c3dbbf4b7d27c284d (patch) | |
tree | c9958b9ede5a3586af4e4be2e454f495a9f32da3 | |
parent | 6eef979a5488dab01088412f88374b2ea9d615cd (diff) |
trivial/tri-z-clip: test near/far triangle clipping
-rw-r--r-- | src/trivial/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/trivial/Makefile.am | 1 | ||||
-rw-r--r-- | 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 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; +} |