Browse Source

trivial: more tests

tags/mesa_20090313
Keith Whitwell 16 years ago
parent
commit
d04caf2ce4

+ 7
- 0
progs/trivial/Makefile View File

@@ -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 \

+ 111
- 0
progs/trivial/clear-repeat.c View File

@@ -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;
}

+ 169
- 0
progs/trivial/tri-fp-const-imm.c View File

@@ -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;
}

+ 167
- 0
progs/trivial/tri-fp.c View File

@@ -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;
}

+ 139
- 0
progs/trivial/tri-lit.c View File

@@ -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;
}

+ 118
- 0
progs/trivial/tri-repeat.c View File

@@ -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;
}

+ 178
- 0
progs/trivial/tri-unfilled-tri-lit.c View File

@@ -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;
}

+ 175
- 0
progs/trivial/tri-unfilled-tri.c View File

@@ -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;
}

Loading…
Cancel
Save