progs/trivial: test user clip plane in tri-point-line-clipped.c
authorBrian Paul <brianp@vmware.com>
Thu, 14 Jan 2010 16:38:47 +0000 (09:38 -0700)
committerBrian Paul <brianp@vmware.com>
Thu, 14 Jan 2010 16:38:47 +0000 (09:38 -0700)
progs/trivial/tri-point-line-clipped.c

index eef926c24c7f73cf35278f0490c7ad59d5e2860a..f8c1015f5f486b479f78e68d45e8e93cb6bfc85e 100644 (file)
@@ -1,5 +1,10 @@
 /**
- * Test frustum clipping w/ glPolygonMode LINE/POINT.
+ * Test frustum/user clipping w/ glPolygonMode LINE/POINT.
+ *
+ * The bottom/left and bottom/right verts are outside the frustum and clipped.
+ * The top vertex is clipped by a user clipping plane.
+ *
+ * A filled gray reference triangle is shown underneath the points/lines.
  */
 
 #include <stdio.h>
@@ -11,7 +16,7 @@ static int win;
 
 
 static void
-Tri(void)
+ColorTri(void)
 {
    glBegin(GL_TRIANGLES);
    glColor3f(1, 0, 0);   glVertex3f(-1.5, -0.8, 0.0);
@@ -21,19 +26,39 @@ Tri(void)
 }
 
 
+static void
+GrayTri(void)
+{
+   glColor3f(0.3, 0.3, 0.3);
+   glBegin(GL_TRIANGLES);
+   glVertex3f(-1.5, -0.8, 0.0);
+   glVertex3f( 1.5, -0.8, 0.0);
+   glVertex3f( 0.0,  0.9, 0.0);
+   glEnd();
+}
+
+
 static void
 Draw(void)
 {
+   static const GLdouble plane[4] = { 0, -1.0, 0, 0.5 };
+
+   glClear(GL_COLOR_BUFFER_BIT); 
+
    glPointSize(13.0);
    glLineWidth(5.0);
 
-   glClear(GL_COLOR_BUFFER_BIT); 
+   glClipPlane(GL_CLIP_PLANE0, plane);
+   glEnable(GL_CLIP_PLANE0);
+
+   glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
+   GrayTri();
 
    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
-   Tri();
+   ColorTri();
 
    glPolygonMode(GL_FRONT_AND_BACK, GL_POINT);
-   Tri();
+   ColorTri();
 
    glutSwapBuffers();
 }