tri-z-clip.c revision 32001f49
1/** Test Z-axis clipping of a triangle */ 2 3 4#include <stdio.h> 5#include <stdlib.h> 6#include "glut_wrap.h" 7 8 9static GLboolean ztest = GL_FALSE; 10 11 12static void 13Reshape(int width, int height) 14{ 15 glViewport(0, 0, width, height); 16 glMatrixMode(GL_PROJECTION); 17 glLoadIdentity(); 18 glOrtho(-1.0, 1.0, -1.0, 1.0, 2.0, 10.0); 19 glMatrixMode(GL_MODELVIEW); 20 glTranslatef(0, 0, -6.0); 21} 22 23 24static void 25Key(unsigned char key, int x, int y) 26{ 27 if (key == 'z') { 28 ztest = !ztest; 29 printf("ztest = %d\n", ztest); 30 fflush(stdout); 31 } 32 else if (key == 27) { 33 exit(1); 34 } 35 glutPostRedisplay(); 36} 37 38 39static void 40Draw(void) 41{ 42 glClearColor(0.5, 0.5, 0.5, 1.0); 43 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 44 45 if (ztest) 46 glEnable(GL_DEPTH_TEST); 47 else 48 glDisable(GL_DEPTH_TEST); 49 50 glBegin(GL_TRIANGLES); 51 glColor3f(0, 0, 1); 52 glVertex3f(-0.5, 0.7, -10.0); 53 glColor3f(1, 0, 0); 54 glVertex3f(-0.5, -0.7, -10.0); 55 glColor3f(0, 1, 0); 56 glVertex3f(1.0, 0.0, 12.0); 57 glEnd(); 58 59 glutSwapBuffers(); 60} 61 62 63int 64main(int argc, char **argv) 65{ 66 glutInit(&argc, argv); 67 glutInitWindowPosition(0, 0); 68 glutInitWindowSize(250, 250); 69 glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); 70 glutCreateWindow(*argv); 71 72 glutReshapeFunc(Reshape); 73 glutKeyboardFunc(Key); 74 glutDisplayFunc(Draw); 75 glutMainLoop(); 76 return 0; 77} 78