diff options
Diffstat (limited to 'progs/xdemos/shape.c')
-rw-r--r-- | progs/xdemos/shape.c | 82 |
1 files changed, 80 insertions, 2 deletions
diff --git a/progs/xdemos/shape.c b/progs/xdemos/shape.c index 94b9b1f26a..c91b77a3a5 100644 --- a/progs/xdemos/shape.c +++ b/progs/xdemos/shape.c @@ -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); |