diff options
Diffstat (limited to 'progs')
| -rw-r--r-- | progs/trivial/Makefile | 7 | ||||
| -rw-r--r-- | progs/trivial/clear-repeat.c | 111 | ||||
| -rw-r--r-- | progs/trivial/tri-fp-const-imm.c | 169 | ||||
| -rw-r--r-- | progs/trivial/tri-fp.c | 167 | ||||
| -rw-r--r-- | progs/trivial/tri-lit.c | 139 | ||||
| -rw-r--r-- | progs/trivial/tri-repeat.c | 118 | ||||
| -rw-r--r-- | progs/trivial/tri-unfilled-tri-lit.c | 178 | ||||
| -rw-r--r-- | progs/trivial/tri-unfilled-tri.c | 175 | 
8 files changed, 1064 insertions, 0 deletions
| diff --git a/progs/trivial/Makefile b/progs/trivial/Makefile index 6c8c9fad90..1b9a50b437 100644 --- a/progs/trivial/Makefile +++ b/progs/trivial/Makefile @@ -15,6 +15,7 @@ SOURCES = \  	clear-fbo.c \  	clear-scissor.c \  	clear-undefined.c \ +	clear-repeat.c \  	clear.c \  	dlist-dangling.c \  	dlist-edgeflag-dangling.c \ @@ -92,8 +93,12 @@ SOURCES = \  	tri-flat-clip.c \  	tri-flat.c \  	tri-fog.c \ +	tri-fp.c \ +	tri-fp-const-imm.c \ +	tri-lit.c \  	tri-mask-tri.c \  	tri-query.c \ +	tri-repeat.c \  	tri-scissor-tri.c \  	tri-stencil.c \  	tri-tex.c \ @@ -102,6 +107,8 @@ SOURCES = \  	tri-unfilled-edgeflag.c \  	tri-unfilled-clip.c \  	tri-unfilled-smooth.c \ +	tri-unfilled-tri.c \ +	tri-unfilled-tri-lit.c \  	tri-unfilled-userclip-stip.c \  	tri-unfilled-userclip.c \  	tri-unfilled.c \ diff --git a/progs/trivial/clear-repeat.c b/progs/trivial/clear-repeat.c new file mode 100644 index 0000000000..9f9490c6c8 --- /dev/null +++ b/progs/trivial/clear-repeat.c @@ -0,0 +1,111 @@ +/* + * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and + * its documentation for any purpose is hereby granted without fee, provided + * that (i) the above copyright notices and this permission notice appear in + * all copies of the software and related documentation, and (ii) the name of + * Silicon Graphics may not be used in any advertising or + * publicity relating to the software without the specific, prior written + * permission of Silicon Graphics. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF + * ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR + * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, + * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF + * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <math.h> +#include <GL/glut.h> + + +#define CI_OFFSET_1 16 +#define CI_OFFSET_2 32 + + +static void Init(void) +{ +   fprintf(stderr, "GL_RENDERER   = %s\n", (char *) glGetString(GL_RENDERER)); +   fprintf(stderr, "GL_VERSION    = %s\n", (char *) glGetString(GL_VERSION)); +   fprintf(stderr, "GL_VENDOR     = %s\n", (char *) glGetString(GL_VENDOR)); + +    glClearColor(0.3, 0.1, 0.3, 0.0); +} + +static void Reshape(int width, int height) +{ + +    glViewport(0, 0, (GLint)width, (GLint)height); + +    glMatrixMode(GL_PROJECTION); +    glLoadIdentity(); +    glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); +    glMatrixMode(GL_MODELVIEW); +} + +static void Key(unsigned char key, int x, int y) +{ +   switch (key) { +   case 27: +      exit(0); +   default: +      glutPostRedisplay(); +      return; +   } +} + +static void Draw(void) +{ +   static float f = 0; +   while (1) { +      f += .1; +      glClearColor((sin(f)+1)/2.0,(cos(f)+1)/2.0,0.5,1);  +      glClear(GL_COLOR_BUFFER_BIT);  +      glutSwapBuffers(); +   } +   glutPostRedisplay(); +} + +static GLenum Args(int argc, char **argv) +{ +    return GL_TRUE; +} + +int main(int argc, char **argv) +{ +    GLenum type; + +    glutInit(&argc, argv); + +    if (Args(argc, argv) == GL_FALSE) { +	exit(1); +    } + +    glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); + +    type = GLUT_RGB | GLUT_ALPHA; +    type |= GLUT_DOUBLE; +    glutInitDisplayMode(type); + +    if (glutCreateWindow("First Tri") == GL_FALSE) { +	exit(1); +    } + +    Init(); + +    glutReshapeFunc(Reshape); +    glutKeyboardFunc(Key); +    glutDisplayFunc(Draw); +    glutMainLoop(); +    return 0; +} diff --git a/progs/trivial/tri-fp-const-imm.c b/progs/trivial/tri-fp-const-imm.c new file mode 100644 index 0000000000..71113802ed --- /dev/null +++ b/progs/trivial/tri-fp-const-imm.c @@ -0,0 +1,169 @@ +/* + * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and + * its documentation for any purpose is hereby granted without fee, provided + * that (i) the above copyright notices and this permission notice appear in + * all copies of the software and related documentation, and (ii) the name of + * Silicon Graphics may not be used in any advertising or + * publicity relating to the software without the specific, prior written + * permission of Silicon Graphics. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF + * ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR + * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, + * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF + * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#define GL_GLEXT_PROTOTYPES +#include <GL/glut.h> + + +#define CI_OFFSET_1 16 +#define CI_OFFSET_2 32 + + +GLenum doubleBuffer; + +static void Init(void) +{ +   GLint errno; +   GLuint prognum; +   static const char *prog1 = +      "!!ARBfp1.0\n" +      "TEMP R1;\n" +      "MOV  R1, state.material.emission;\n" +      "MUL  R1, R1, {0.9}.x;\n" +      "MOV  result.color, R1;\n" +      "END\n"; + + +   fprintf(stderr, "GL_RENDERER   = %s\n", (char *) glGetString(GL_RENDERER)); +   fprintf(stderr, "GL_VERSION    = %s\n", (char *) glGetString(GL_VERSION)); +   fprintf(stderr, "GL_VENDOR     = %s\n", (char *) glGetString(GL_VENDOR)); + +   /* Setup the fragment program */ +   glGenProgramsARB(1, &prognum); +   glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, prognum); +   glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, +                      strlen(prog1), (const GLubyte *)prog1); +    +   errno = glGetError(); +   printf("glGetError = 0x%x\n", errno); +   if (errno != GL_NO_ERROR) { +      GLint errorpos; + +      glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); +      printf("errorpos: %d\n", errorpos); +      printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", +             (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); +   } +   glEnable(GL_FRAGMENT_PROGRAM_ARB); + +    glClearColor(0.0, 0.0, 1.0, 0.0); +} + +static void Reshape(int width, int height) +{ + +    glViewport(0, 0, (GLint)width, (GLint)height); + +    glMatrixMode(GL_PROJECTION); +    glLoadIdentity(); +/*     glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ +    glMatrixMode(GL_MODELVIEW); +} + +static void Key(unsigned char key, int x, int y) +{ + +    switch (key) { +      case 27: +	exit(1); +      default: +	return; +    } + +    glutPostRedisplay(); +} + +static void Draw(void) +{ +   glClear(GL_COLOR_BUFFER_BIT);  + +   glBegin(GL_TRIANGLES); +   glColor3f(0,0,.7);  +   glTexCoord3f(0,0,.7);  +   glVertex3f( 0.9, -0.9, -0.0); +   glColor3f(.8,0,0);  +   glTexCoord3f(.8,0,0);  +   glVertex3f( 0.9,  0.9, -0.0); +   glColor3f(0,.9,0);  +   glTexCoord3f(0,.9,0);  +   glVertex3f(-0.9,  0.0, -0.0); +   glEnd(); + +   glFlush(); + +   if (doubleBuffer) { +      glutSwapBuffers(); +   } +} + +static GLenum Args(int argc, char **argv) +{ +    GLint i; + +    doubleBuffer = GL_FALSE; + +    for (i = 1; i < argc; i++) { +        if (strcmp(argv[i], "-sb") == 0) { +	    doubleBuffer = GL_FALSE; +	} else if (strcmp(argv[i], "-db") == 0) { +	    doubleBuffer = GL_TRUE; +	} else { +	    fprintf(stderr, "%s (Bad option).\n", argv[i]); +	    return GL_FALSE; +	} +    } +    return GL_TRUE; +} + +int main(int argc, char **argv) +{ +    GLenum type; + +    glutInit(&argc, argv); + +    if (Args(argc, argv) == GL_FALSE) { +	exit(1); +    } + +    glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); + +    type = GLUT_RGB | GLUT_ALPHA; +    type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; +    glutInitDisplayMode(type); + +    if (glutCreateWindow("First Tri") == GL_FALSE) { +	exit(1); +    } + +    Init(); + +    glutReshapeFunc(Reshape); +    glutKeyboardFunc(Key); +    glutDisplayFunc(Draw); +    glutMainLoop(); +	return 0; +} diff --git a/progs/trivial/tri-fp.c b/progs/trivial/tri-fp.c new file mode 100644 index 0000000000..9ff355a4ca --- /dev/null +++ b/progs/trivial/tri-fp.c @@ -0,0 +1,167 @@ +/* + * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and + * its documentation for any purpose is hereby granted without fee, provided + * that (i) the above copyright notices and this permission notice appear in + * all copies of the software and related documentation, and (ii) the name of + * Silicon Graphics may not be used in any advertising or + * publicity relating to the software without the specific, prior written + * permission of Silicon Graphics. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF + * ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR + * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, + * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF + * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#define GL_GLEXT_PROTOTYPES +#include <GL/glut.h> + + +#define CI_OFFSET_1 16 +#define CI_OFFSET_2 32 + + +GLenum doubleBuffer; + +static void Init(void) +{ +   GLint errno; +   GLuint prognum; +   static const char *prog1 = +      "!!ARBfp1.0\n" +      "MOV  result.color, fragment.texcoord[1];\n" +//      "MOV  result.color, fragment.color;\n" +      "END\n"; + + +   fprintf(stderr, "GL_RENDERER   = %s\n", (char *) glGetString(GL_RENDERER)); +   fprintf(stderr, "GL_VERSION    = %s\n", (char *) glGetString(GL_VERSION)); +   fprintf(stderr, "GL_VENDOR     = %s\n", (char *) glGetString(GL_VENDOR)); + +   /* Setup the fragment program */ +   glGenProgramsARB(1, &prognum); +   glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, prognum); +   glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, +                      strlen(prog1), (const GLubyte *)prog1); +    +   errno = glGetError(); +   printf("glGetError = 0x%x\n", errno); +   if (errno != GL_NO_ERROR) { +      GLint errorpos; + +      glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); +      printf("errorpos: %d\n", errorpos); +      printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", +             (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); +   } +   glEnable(GL_FRAGMENT_PROGRAM_ARB); + +    glClearColor(0.0, 0.0, 1.0, 0.0); +} + +static void Reshape(int width, int height) +{ + +    glViewport(0, 0, (GLint)width, (GLint)height); + +    glMatrixMode(GL_PROJECTION); +    glLoadIdentity(); +/*     glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ +    glMatrixMode(GL_MODELVIEW); +} + +static void Key(unsigned char key, int x, int y) +{ + +    switch (key) { +      case 27: +	exit(1); +      default: +	return; +    } + +    glutPostRedisplay(); +} + +static void Draw(void) +{ +   glClear(GL_COLOR_BUFFER_BIT);  + +   glBegin(GL_TRIANGLES); +   glColor3f(0,0,.7);  +   glTexCoord3f(0,0,.7);  +   glVertex3f( 0.9, -0.9, -0.0); +   glColor3f(.8,0,0);  +   glTexCoord3f(.8,0,0);  +   glVertex3f( 0.9,  0.9, -0.0); +   glColor3f(0,.9,0);  +   glTexCoord3f(0,.9,0);  +   glVertex3f(-0.9,  0.0, -0.0); +   glEnd(); + +   glFlush(); + +   if (doubleBuffer) { +      glutSwapBuffers(); +   } +} + +static GLenum Args(int argc, char **argv) +{ +    GLint i; + +    doubleBuffer = GL_FALSE; + +    for (i = 1; i < argc; i++) { +        if (strcmp(argv[i], "-sb") == 0) { +	    doubleBuffer = GL_FALSE; +	} else if (strcmp(argv[i], "-db") == 0) { +	    doubleBuffer = GL_TRUE; +	} else { +	    fprintf(stderr, "%s (Bad option).\n", argv[i]); +	    return GL_FALSE; +	} +    } +    return GL_TRUE; +} + +int main(int argc, char **argv) +{ +    GLenum type; + +    glutInit(&argc, argv); + +    if (Args(argc, argv) == GL_FALSE) { +	exit(1); +    } + +    glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); + +    type = GLUT_RGB | GLUT_ALPHA; +    type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; +    glutInitDisplayMode(type); + +    if (glutCreateWindow("First Tri") == GL_FALSE) { +	exit(1); +    } + +    Init(); + +    glutReshapeFunc(Reshape); +    glutKeyboardFunc(Key); +    glutDisplayFunc(Draw); +    glutMainLoop(); +	return 0; +} diff --git a/progs/trivial/tri-lit.c b/progs/trivial/tri-lit.c new file mode 100644 index 0000000000..22f199c982 --- /dev/null +++ b/progs/trivial/tri-lit.c @@ -0,0 +1,139 @@ +/* + * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and + * its documentation for any purpose is hereby granted without fee, provided + * that (i) the above copyright notices and this permission notice appear in + * all copies of the software and related documentation, and (ii) the name of + * Silicon Graphics may not be used in any advertising or + * publicity relating to the software without the specific, prior written + * permission of Silicon Graphics. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF + * ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR + * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, + * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF + * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <GL/glut.h> + + +#define CI_OFFSET_1 16 +#define CI_OFFSET_2 32 + + +GLenum doubleBuffer; + +static void Init(void) +{ +   fprintf(stderr, "GL_RENDERER   = %s\n", (char *) glGetString(GL_RENDERER)); +   fprintf(stderr, "GL_VERSION    = %s\n", (char *) glGetString(GL_VERSION)); +   fprintf(stderr, "GL_VENDOR     = %s\n", (char *) glGetString(GL_VENDOR)); + +  glEnable(GL_LIGHTING); +  glEnable(GL_LIGHT0); + +    glClearColor(0.0, 0.0, 1.0, 0.0); +} + +static void Reshape(int width, int height) +{ + +    glViewport(0, 0, (GLint)width, (GLint)height); + +    glMatrixMode(GL_PROJECTION); +    glLoadIdentity(); +/*     glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ +    glMatrixMode(GL_MODELVIEW); +} + +static void Key(unsigned char key, int x, int y) +{ + +    switch (key) { +      case 27: +	exit(1); +      default: +	return; +    } + +    glutPostRedisplay(); +} + +static void Draw(void) +{ +   glClear(GL_COLOR_BUFFER_BIT);  + +   glBegin(GL_TRIANGLES); +   glNormal3f(0,0,.7);  +   glVertex3f( 0.9, -0.9, -0.0); +   glNormal3f(.8,0,0);  +   glVertex3f( 0.9,  0.9, -0.0); +   glNormal3f(0,.9,0);  +   glVertex3f(-0.9,  0.0, -0.0); +   glEnd(); + +   glFlush(); + +   if (doubleBuffer) { +      glutSwapBuffers(); +   } +} + +static GLenum Args(int argc, char **argv) +{ +    GLint i; + +    doubleBuffer = GL_FALSE; + +    for (i = 1; i < argc; i++) { +        if (strcmp(argv[i], "-sb") == 0) { +	    doubleBuffer = GL_FALSE; +	} else if (strcmp(argv[i], "-db") == 0) { +	    doubleBuffer = GL_TRUE; +	} else { +	    fprintf(stderr, "%s (Bad option).\n", argv[i]); +	    return GL_FALSE; +	} +    } +    return GL_TRUE; +} + +int main(int argc, char **argv) +{ +    GLenum type; + +    glutInit(&argc, argv); + +    if (Args(argc, argv) == GL_FALSE) { +	exit(1); +    } + +    glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); + +    type = GLUT_RGB | GLUT_ALPHA; +    type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; +    glutInitDisplayMode(type); + +    if (glutCreateWindow("First Tri") == GL_FALSE) { +	exit(1); +    } + +    Init(); + +    glutReshapeFunc(Reshape); +    glutKeyboardFunc(Key); +    glutDisplayFunc(Draw); +    glutMainLoop(); +	return 0; +} diff --git a/progs/trivial/tri-repeat.c b/progs/trivial/tri-repeat.c new file mode 100644 index 0000000000..e894269e84 --- /dev/null +++ b/progs/trivial/tri-repeat.c @@ -0,0 +1,118 @@ +/* + * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and + * its documentation for any purpose is hereby granted without fee, provided + * that (i) the above copyright notices and this permission notice appear in + * all copies of the software and related documentation, and (ii) the name of + * Silicon Graphics may not be used in any advertising or + * publicity relating to the software without the specific, prior written + * permission of Silicon Graphics. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF + * ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR + * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, + * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF + * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <math.h> +#include <GL/glut.h> + + +#define CI_OFFSET_1 16 +#define CI_OFFSET_2 32 + + +static void Init(void) +{ +   fprintf(stderr, "GL_RENDERER   = %s\n", (char *) glGetString(GL_RENDERER)); +   fprintf(stderr, "GL_VERSION    = %s\n", (char *) glGetString(GL_VERSION)); +   fprintf(stderr, "GL_VENDOR     = %s\n", (char *) glGetString(GL_VENDOR)); + +    glClearColor(0.3, 0.1, 0.3, 0.0); +} + +static void Reshape(int width, int height) +{ + +    glViewport(0, 0, (GLint)width, (GLint)height); + +    glMatrixMode(GL_PROJECTION); +    glLoadIdentity(); +    glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); +    glMatrixMode(GL_MODELVIEW); +} + +static void Key(unsigned char key, int x, int y) +{ +   switch (key) { +   case 27: +      exit(0); +   default: +      glutPostRedisplay(); +      return; +   } +} + +static void Draw(void) +{ +   static float f = 0; +   f += .1; +   glClear(GL_COLOR_BUFFER_BIT);  + +   glBegin(GL_TRIANGLES); +   glColor3f((sin(f)+1)/2.0,0,0);  +   glVertex3f(-0.9, -0.9, -30.0); +   glColor3f(0,(cos(f)+1)/2.0,0);  +   glVertex3f( 0.9, -0.9, -30.0); +   glColor3f(0,0,.7);  +   glVertex3f( 0.0,  0.9, -30.0); +   glEnd(); + +   glutSwapBuffers(); +   glutPostRedisplay(); +} + +static GLenum Args(int argc, char **argv) +{ +    return GL_TRUE; +} + +int main(int argc, char **argv) +{ +    GLenum type; + +    glutInit(&argc, argv); + +    if (Args(argc, argv) == GL_FALSE) { +	exit(1); +    } + +    glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); + +    type = GLUT_RGB | GLUT_ALPHA; +    type |= GLUT_DOUBLE; +    glutInitDisplayMode(type); + +    if (glutCreateWindow("First Tri") == GL_FALSE) { +	exit(1); +    } + +    Init(); + +    glutReshapeFunc(Reshape); +    glutKeyboardFunc(Key); +    glutDisplayFunc(Draw); +    glutMainLoop(); +    return 0; +} diff --git a/progs/trivial/tri-unfilled-tri-lit.c b/progs/trivial/tri-unfilled-tri-lit.c new file mode 100644 index 0000000000..f9e1d00988 --- /dev/null +++ b/progs/trivial/tri-unfilled-tri-lit.c @@ -0,0 +1,178 @@ +/* + * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and + * its documentation for any purpose is hereby granted without fee, provided + * that (i) the above copyright notices and this permission notice appear in + * all copies of the software and related documentation, and (ii) the name of + * Silicon Graphics may not be used in any advertising or + * publicity relating to the software without the specific, prior written + * permission of Silicon Graphics. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF + * ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR + * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, + * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF + * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <GL/glut.h> + + +#define CI_OFFSET_1 16 +#define CI_OFFSET_2 32 + + +GLenum doubleBuffer; + +static void Init(void) +{ +   fprintf(stderr, "GL_RENDERER   = %s\n", (char *) glGetString(GL_RENDERER)); +   fprintf(stderr, "GL_VERSION    = %s\n", (char *) glGetString(GL_VERSION)); +   fprintf(stderr, "GL_VENDOR     = %s\n", (char *) glGetString(GL_VENDOR)); + +  glEnable(GL_LIGHTING); +  glEnable(GL_LIGHT0); + +    glClearColor(0.0, 0.0, 1.0, 0.0); +} + +static void Reshape(int width, int height) +{ + +    glViewport(0, 0, (GLint)width, (GLint)height); + +    glMatrixMode(GL_PROJECTION); +    glLoadIdentity(); +/*     glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ +    glMatrixMode(GL_MODELVIEW); +} + +static void Key(unsigned char key, int x, int y) +{ + +    switch (key) { +      case 27: +	exit(1); +      default: +	return; +    } + +    glutPostRedisplay(); +} + +static void Draw(void) +{ +   glClear(GL_COLOR_BUFFER_BIT);  + +   glPolygonMode(GL_FRONT, GL_LINE); +   glPolygonMode(GL_BACK, GL_LINE); + +   glBegin(GL_TRIANGLES); +   glNormal3f(0,0,.7);  +   glVertex3f( 0.9, -0.9, -0.0); +   glNormal3f(.8,0,0);  +   glVertex3f( 0.9,  0.9, -0.0); +   glNormal3f(0,.9,0);  +   glVertex3f(-0.9,  0.0, -0.0); +   glEnd(); + +   glPolygonMode(GL_FRONT, GL_FILL); +   glPolygonMode(GL_BACK, GL_FILL); + +   glBegin(GL_TRIANGLES); +   glNormal3f(0,0,.7);  +   glVertex3f( 0.8, -0.8, -0.0); +   glNormal3f(.8,0,0);  +   glVertex3f( 0.8,  0.8, -0.0); +   glNormal3f(0,.9,0);  +   glVertex3f(-0.8,  0.0, -0.0); +   glEnd(); + +   glPolygonMode(GL_FRONT, GL_LINE); +   glPolygonMode(GL_BACK, GL_LINE); + +   glBegin(GL_TRIANGLES); +   glNormal3f(.8,0,0);  +   glVertex3f( -0.9,  0.9, -0.0); +   glNormal3f(0,0,.7);  +   glVertex3f( -0.9, -0.9, -0.0); +   glNormal3f(0,.9,0);  +   glVertex3f( 0.9,  0.0, -0.0); +   glEnd(); + +   glPolygonMode(GL_FRONT, GL_FILL); +   glPolygonMode(GL_BACK, GL_FILL); + +   glBegin(GL_TRIANGLES); +   glNormal3f(.8,0,0);  +   glVertex3f( -0.8,  0.8, -0.0); +   glNormal3f(0,0,.7);  +   glVertex3f( -0.8, -0.8, -0.0); +   glNormal3f(0,.9,0);  +   glVertex3f( 0.8,  0.0, -0.0); +   glEnd(); + +   glFlush(); + +   if (doubleBuffer) { +      glutSwapBuffers(); +   } +} + +static GLenum Args(int argc, char **argv) +{ +    GLint i; + +    doubleBuffer = GL_FALSE; + +    for (i = 1; i < argc; i++) { +        if (strcmp(argv[i], "-sb") == 0) { +	    doubleBuffer = GL_FALSE; +	} else if (strcmp(argv[i], "-db") == 0) { +	    doubleBuffer = GL_TRUE; +	} else { +	    fprintf(stderr, "%s (Bad option).\n", argv[i]); +	    return GL_FALSE; +	} +    } +    return GL_TRUE; +} + +int main(int argc, char **argv) +{ +    GLenum type; + +    glutInit(&argc, argv); + +    if (Args(argc, argv) == GL_FALSE) { +	exit(1); +    } + +    glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); + +    type = GLUT_RGB | GLUT_ALPHA; +    type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; +    glutInitDisplayMode(type); + +    if (glutCreateWindow("First Tri") == GL_FALSE) { +	exit(1); +    } + +    Init(); + +    glutReshapeFunc(Reshape); +    glutKeyboardFunc(Key); +    glutDisplayFunc(Draw); +    glutMainLoop(); +	return 0; +} diff --git a/progs/trivial/tri-unfilled-tri.c b/progs/trivial/tri-unfilled-tri.c new file mode 100644 index 0000000000..d9a9faeb9f --- /dev/null +++ b/progs/trivial/tri-unfilled-tri.c @@ -0,0 +1,175 @@ +/* + * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and + * its documentation for any purpose is hereby granted without fee, provided + * that (i) the above copyright notices and this permission notice appear in + * all copies of the software and related documentation, and (ii) the name of + * Silicon Graphics may not be used in any advertising or + * publicity relating to the software without the specific, prior written + * permission of Silicon Graphics. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF + * ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR + * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, + * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF + * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <GL/glut.h> + + +#define CI_OFFSET_1 16 +#define CI_OFFSET_2 32 + + +GLenum doubleBuffer; + +static void Init(void) +{ +   fprintf(stderr, "GL_RENDERER   = %s\n", (char *) glGetString(GL_RENDERER)); +   fprintf(stderr, "GL_VERSION    = %s\n", (char *) glGetString(GL_VERSION)); +   fprintf(stderr, "GL_VENDOR     = %s\n", (char *) glGetString(GL_VENDOR)); + +    glClearColor(0.0, 0.0, 1.0, 0.0); +} + +static void Reshape(int width, int height) +{ + +    glViewport(0, 0, (GLint)width, (GLint)height); + +    glMatrixMode(GL_PROJECTION); +    glLoadIdentity(); +/*     glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ +    glMatrixMode(GL_MODELVIEW); +} + +static void Key(unsigned char key, int x, int y) +{ + +    switch (key) { +      case 27: +	exit(1); +      default: +	return; +    } + +    glutPostRedisplay(); +} + +static void Draw(void) +{ +   glClear(GL_COLOR_BUFFER_BIT);  + +   glPolygonMode(GL_FRONT, GL_LINE); +   glPolygonMode(GL_BACK, GL_LINE); + +   glBegin(GL_TRIANGLES); +   glColor3f(0,0,.7);  +   glVertex3f( 0.9, -0.9, -0.0); +   glColor3f(.8,0,0);  +   glVertex3f( 0.9,  0.9, -0.0); +   glColor3f(0,.9,0);  +   glVertex3f(-0.9,  0.0, -0.0); +   glEnd(); + +   glPolygonMode(GL_FRONT, GL_FILL); +   glPolygonMode(GL_BACK, GL_FILL); + +   glBegin(GL_TRIANGLES); +   glColor3f(0,0,.7);  +   glVertex3f( 0.8, -0.8, -0.0); +   glColor3f(.8,0,0);  +   glVertex3f( 0.8,  0.8, -0.0); +   glColor3f(0,.9,0);  +   glVertex3f(-0.8,  0.0, -0.0); +   glEnd(); + +   glPolygonMode(GL_FRONT, GL_LINE); +   glPolygonMode(GL_BACK, GL_LINE); + +   glBegin(GL_TRIANGLES); +   glColor3f(.8,0,0);  +   glVertex3f( -0.9,  0.9, -0.0); +   glColor3f(0,0,.7);  +   glVertex3f( -0.9, -0.9, -0.0); +   glColor3f(0,.9,0);  +   glVertex3f( 0.9,  0.0, -0.0); +   glEnd(); + +   glPolygonMode(GL_FRONT, GL_FILL); +   glPolygonMode(GL_BACK, GL_FILL); + +   glBegin(GL_TRIANGLES); +   glColor3f(.8,0,0);  +   glVertex3f( -0.8,  0.8, -0.0); +   glColor3f(0,0,.7);  +   glVertex3f( -0.8, -0.8, -0.0); +   glColor3f(0,.9,0);  +   glVertex3f( 0.8,  0.0, -0.0); +   glEnd(); + +   glFlush(); + +   if (doubleBuffer) { +      glutSwapBuffers(); +   } +} + +static GLenum Args(int argc, char **argv) +{ +    GLint i; + +    doubleBuffer = GL_FALSE; + +    for (i = 1; i < argc; i++) { +        if (strcmp(argv[i], "-sb") == 0) { +	    doubleBuffer = GL_FALSE; +	} else if (strcmp(argv[i], "-db") == 0) { +	    doubleBuffer = GL_TRUE; +	} else { +	    fprintf(stderr, "%s (Bad option).\n", argv[i]); +	    return GL_FALSE; +	} +    } +    return GL_TRUE; +} + +int main(int argc, char **argv) +{ +    GLenum type; + +    glutInit(&argc, argv); + +    if (Args(argc, argv) == GL_FALSE) { +	exit(1); +    } + +    glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); + +    type = GLUT_RGB | GLUT_ALPHA; +    type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; +    glutInitDisplayMode(type); + +    if (glutCreateWindow("First Tri") == GL_FALSE) { +	exit(1); +    } + +    Init(); + +    glutReshapeFunc(Reshape); +    glutKeyboardFunc(Key); +    glutDisplayFunc(Draw); +    glutMainLoop(); +	return 0; +} | 
