2 * Test frustum/user clipping w/ glPolygonMode LINE/POINT.
4 * The bottom/left and bottom/right verts are outside the frustum and clipped.
5 * The top vertex is clipped by a user clipping plane.
7 * A filled gray reference triangle is shown underneath the points/lines.
21 glBegin(GL_TRIANGLES
);
22 glColor3f(1, 0, 0); glVertex3f(-1.5, -0.8, 0.0);
23 glColor3f(0, 1, 0); glVertex3f( 1.5, -0.8, 0.0);
24 glColor3f(0, 0, 1); glVertex3f( 0.0, 0.9, 0.0);
32 glColor3f(0.3, 0.3, 0.3);
33 glBegin(GL_TRIANGLES
);
34 glVertex3f(-1.5, -0.8, 0.0);
35 glVertex3f( 1.5, -0.8, 0.0);
36 glVertex3f( 0.0, 0.9, 0.0);
44 static const GLdouble plane
[4] = { 0, -1.0, 0, 0.5 };
46 glClear(GL_COLOR_BUFFER_BIT
);
51 glClipPlane(GL_CLIP_PLANE0
, plane
);
52 glEnable(GL_CLIP_PLANE0
);
54 glPolygonMode(GL_FRONT_AND_BACK
, GL_FILL
);
57 glPolygonMode(GL_FRONT_AND_BACK
, GL_LINE
);
60 glPolygonMode(GL_FRONT_AND_BACK
, GL_POINT
);
67 static void Reshape(int width
, int height
)
69 glViewport(0, 0, (GLint
)width
, (GLint
)height
);
70 glMatrixMode(GL_PROJECTION
);
72 glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
73 glMatrixMode(GL_MODELVIEW
);
78 Key(unsigned char key
, int x
, int y
)
81 glutDestroyWindow(win
);
93 fprintf(stderr
, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER
));
94 fprintf(stderr
, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION
));
95 fprintf(stderr
, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR
));
101 main(int argc
, char **argv
)
103 glutInitWindowSize(300, 300);
104 glutInit(&argc
, argv
);
105 glutInitDisplayMode(GLUT_DOUBLE
| GLUT_DEPTH
);
106 win
= glutCreateWindow(*argv
);
111 glutReshapeFunc(Reshape
);
112 glutKeyboardFunc(Key
);
113 glutDisplayFunc(Draw
);