draw a solid cube too
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 27 Jun 2000 15:33:44 +0000 (15:33 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 27 Jun 2000 15:33:44 +0000 (15:33 +0000)
progs/xdemos/shape.c

index 94b9b1f..c91b77a 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: shape.c,v 1.1 1999/08/19 00:55:43 jtg Exp $ */
+/* $Id: shape.c,v 1.2 2000/06/27 15:33:44 brianp Exp $ */
 
 /*
  * Example of using the X "shape" extension with OpenGL:  render a spinning
@@ -45,7 +45,7 @@ static void display(Display *dpy, Window win)
 {
    float scale = 1.7;
 
-   glClear(GL_COLOR_BUFFER_BIT);
+   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
    glPushMatrix();
 
@@ -53,6 +53,9 @@ static void display(Display *dpy, Window win)
    glRotatef(Xangle, 1.0, 0.0, 0.0);
    glRotatef(Yangle, 0.0, 1.0, 0.0);
 
+   /*
+    * wireframe box
+    */
    glColor3f(1.0, 1.0, 1.0);
    glBegin(GL_LINE_LOOP);
    glVertex3f(-1.0, -1.0, -1.0);
@@ -75,6 +78,62 @@ static void display(Display *dpy, Window win)
    glVertex3f(-1.0,  1.0, -1.0);   glVertex3f(-1.0,  1.0, 1.0);
    glEnd();
 
+   /*
+    * Solid box
+    */
+   glPushMatrix();
+   glScalef(0.75, 0.75, 0.75);
+
+   glColor3f(1, 0, 0);
+   glBegin(GL_POLYGON);
+   glVertex3f(1, -1, -1);
+   glVertex3f(1,  1, -1);
+   glVertex3f(1,  1,  1);
+   glVertex3f(1, -1,  1);
+   glEnd();
+
+   glColor3f(0, 1, 1);
+   glBegin(GL_POLYGON);
+   glVertex3f(-1, -1, -1);
+   glVertex3f(-1,  1, -1);
+   glVertex3f(-1,  1,  1);
+   glVertex3f(-1, -1,  1);
+   glEnd();
+
+   glColor3f(0, 1, 0);
+   glBegin(GL_POLYGON);
+   glVertex3f(-1, 1, -1);
+   glVertex3f( 1, 1, -1);
+   glVertex3f( 1, 1,  1);
+   glVertex3f(-1, 1,  1);
+   glEnd();
+
+   glColor3f(1, 0, 1);
+   glBegin(GL_POLYGON);
+   glVertex3f(-1, -1, -1);
+   glVertex3f( 1, -1, -1);
+   glVertex3f( 1, -1,  1);
+   glVertex3f(-1, -1,  1);
+   glEnd();
+
+   glColor3f(0, 0, 1);
+   glBegin(GL_POLYGON);
+   glVertex3f(-1, -1, 1);
+   glVertex3f( 1, -1, 1);
+   glVertex3f( 1,  1, 1);
+   glVertex3f(-1,  1, 1);
+   glEnd();
+
+   glColor3f(1, 1, 0);
+   glBegin(GL_POLYGON);
+   glVertex3f(-1, -1, -1);
+   glVertex3f( 1, -1, -1);
+   glVertex3f( 1,  1, -1);
+   glVertex3f(-1,  1, -1);
+   glEnd();
+   glPopMatrix();
+
+
    glPopMatrix();
 
    glXSwapBuffers(dpy, win);
@@ -152,6 +211,8 @@ static void reshape(int width, int height)
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0.0, 0.0, -10.0);
+
+   glEnable(GL_DEPTH_TEST);
 }
 
 
@@ -249,6 +310,7 @@ int main(int argc, char *argv[])
    unsigned long winAttribsMask;
    GLXContext glCtx;
    int ignore;
+   const char *name = "OpenGL in a Shaped Window";
 
    dpy = XOpenDisplay(NULL);
    if (!dpy) {
@@ -292,6 +354,22 @@ int main(int argc, char *argv[])
                        visInfo->depth, InputOutput,
                        visInfo->visual,
                        winAttribsMask, &winAttribs);
+
+   {
+      XSizeHints sizehints;
+      /*
+      sizehints.x = xpos;
+      sizehints.y = ypos;
+      sizehints.width  = width;
+      sizehints.height = height;
+      */
+      sizehints.flags = 0;
+      XSetNormalHints(dpy, win, &sizehints);
+      XSetStandardProperties(dpy, win, name, name,
+                              None, (char **)NULL, 0, &sizehints);
+   }
+
+
    XMapWindow(dpy, win);
 
    glXMakeCurrent(dpy, win, glCtx);