diff options
| author | Keith Whitwell <keithw@vmware.com> | 2009-01-14 20:33:06 +0000 | 
|---|---|---|
| committer | Keith Whitwell <keithw@vmware.com> | 2009-01-14 20:33:06 +0000 | 
| commit | 2d155f91d22d67c3aee5a11219a6e1a7c45c2d74 (patch) | |
| tree | e07080925acae160515cd1d9f4006a42004dd3bd /progs/trivial | |
| parent | a8e0df08ef75db9d80ddc55098e436829af49d7c (diff) | |
trivial: clear with random color
Diffstat (limited to 'progs/trivial')
| -rw-r--r-- | progs/trivial/Makefile | 1 | ||||
| -rw-r--r-- | progs/trivial/clear-random.c | 132 | 
2 files changed, 133 insertions, 0 deletions
| diff --git a/progs/trivial/Makefile b/progs/trivial/Makefile index f7bfd1f039..2c158c8d49 100644 --- a/progs/trivial/Makefile +++ b/progs/trivial/Makefile @@ -16,6 +16,7 @@ SOURCES = \  	clear-scissor.c \  	clear-undefined.c \  	clear-repeat.c \ +	clear-random.c \  	clear.c \  	dlist-dangling.c \  	dlist-edgeflag-dangling.c \ diff --git a/progs/trivial/clear-random.c b/progs/trivial/clear-random.c new file mode 100644 index 0000000000..16bd83339b --- /dev/null +++ b/progs/trivial/clear-random.c @@ -0,0 +1,132 @@ +/* + * 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)); + +} + +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: +	return; +    } + +    glutPostRedisplay(); +} + +static void Draw(void) +{ +    glClearColor( +       rand() / (float)RAND_MAX, +       rand() / (float)RAND_MAX, +       rand() / (float)RAND_MAX, +       0.0); + +   glClear(GL_COLOR_BUFFER_BIT);  +   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( 256, 256); + +    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; +} | 
