diff options
Diffstat (limited to 'progs')
| -rw-r--r-- | progs/trivial/Makefile | 1 | ||||
| -rw-r--r-- | progs/trivial/SConscript | 1 | ||||
| -rw-r--r-- | progs/trivial/vp-tri-invariant.c | 147 | 
3 files changed, 149 insertions, 0 deletions
diff --git a/progs/trivial/Makefile b/progs/trivial/Makefile index 69b0408bbd..22de83fa79 100644 --- a/progs/trivial/Makefile +++ b/progs/trivial/Makefile @@ -147,6 +147,7 @@ SOURCES = \  	vp-clip.c \  	vp-line-clip.c \  	vp-tri.c \ +	vp-tri-invariant.c \  	vp-tri-swap.c \  	vp-tri-tex.c \  	vp-tri-imm.c \ diff --git a/progs/trivial/SConscript b/progs/trivial/SConscript index 03ccb1436d..9a1f3575bd 100644 --- a/progs/trivial/SConscript +++ b/progs/trivial/SConscript @@ -143,6 +143,7 @@ progs = [  	'vp-clip',  	'vp-line-clip',  	'vp-tri', +	'vp-tri-invariant',  	'vp-tri-swap',  	'vp-tri-tex',  	'vp-tri-imm', diff --git a/progs/trivial/vp-tri-invariant.c b/progs/trivial/vp-tri-invariant.c new file mode 100644 index 0000000000..ff24139365 --- /dev/null +++ b/progs/trivial/vp-tri-invariant.c @@ -0,0 +1,147 @@ +/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <math.h> +#include <GL/glew.h> +#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 = +      "!!ARBvp1.0\n" +      "OPTION ARB_position_invariant ;" +      "MOV  result.color, vertex.color;\n" +      "END\n"; + + +   glGenProgramsARB(1, &prognum); + +   glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); +   glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, +		      strlen(prog1), (const GLubyte *) prog1); + +   errno = glGetError(); +   printf("glGetError = %d\n", errno); +   if (errno != GL_NO_ERROR) +   { +      GLint errorpos; + +      glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); +      printf("errorpos: %d\n", errorpos); +      printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); +   } + +   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)); +   fflush(stderr); + +    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);  + +   glEnable(GL_VERTEX_PROGRAM_ARB); + +   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(); + +   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(*argv) == GL_FALSE) { +	exit(1); +    } + +    glewInit(); +    Init(); + +    glutReshapeFunc(Reshape); +    glutKeyboardFunc(Key); +    glutDisplayFunc(Draw); +    glutMainLoop(); +	return 0; +}  | 
