diff options
Diffstat (limited to 'progs/tests/persp_hint.c')
-rw-r--r-- | progs/tests/persp_hint.c | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/progs/tests/persp_hint.c b/progs/tests/persp_hint.c deleted file mode 100644 index 27140d1f567..00000000000 --- a/progs/tests/persp_hint.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Test the GL_PERSPECTIVE_CORRECTION_HINT setting and its effect on - * color interpolation. - * - * Press 'i' to toggle between GL_NICEST/GL_FASTEST/GL_DONT_CARE. - * - * Depending on the driver, the hint may make a difference, or not. - */ - - -#include <stdlib.h> -#include <stdio.h> -#include <GL/glut.h> - - -static GLenum PerspHint = GL_DONT_CARE; - - -static void -init(void) -{ - GLubyte image[256][256][4]; - GLuint i, j; - for (i = 0; i < 256; i++) { - for (j = 0; j < 256; j++) { - image[i][j][0] = j; - image[i][j][1] = j; - image[i][j][2] = j; - image[i][j][3] = 255; - } - } - glTexImage2D(GL_TEXTURE_2D, 0, 4, 256, 256, 0, - GL_RGBA, GL_UNSIGNED_BYTE, image); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); -} - - -static void -display(void) -{ - switch (PerspHint) { - case GL_NICEST: - printf("hint = GL_NICEST\n"); - break; - case GL_FASTEST: - printf("hint = GL_FASTEST\n"); - break; - case GL_DONT_CARE: - printf("hint = GL_DONT_CARE\n"); - break; - default: - ; - } - - glClear(GL_COLOR_BUFFER_BIT); - -#if 1 - glBegin(GL_QUADS); - /* exercise perspective interpolation */ - glColor3f(0.0, 0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glColor3f(0.0, 0.0, 0.0); glVertex3f(-1.0, 1.0, -1.0); - glColor3f(0.0, 1.0, 0.0); glVertex3f( 7.0, 1.0, -7.0); - glColor3f(0.0, 1.0, 0.0); glVertex3f( 7.0, -1.0, -7.0); - - /* stripe of linear interpolation */ - glColor3f(0.0, 0.0, 0.0); glVertex3f(-1.0, -0.1, -1.001); - glColor3f(0.0, 0.0, 0.0); glVertex3f(-1.0, 0.1, -1.001); - glColor3f(0.0, 1.0, 0.0); glVertex3f( 1.0, 0.1, -1.001); - glColor3f(0.0, 1.0, 0.0); glVertex3f( 1.0, -0.1, -1.001); - glEnd(); -#else - glEnable(GL_TEXTURE_2D); - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 0.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 5.0, 1.0, -7.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 5.0, 0.0, -7.0); - - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.001); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 0.0, -1.001); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 0.0, -1.001); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.001); - glEnd(); -#endif - - glFlush(); -} - - -static void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(90.0, (GLfloat) w / h, 1.0, 300.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - - -static void -key(unsigned char k, int x, int y) -{ - switch (k) { - case 27: /* Escape */ - exit(0); - break; - case 'i': - if (PerspHint == GL_FASTEST) - PerspHint = GL_NICEST; - else if (PerspHint == GL_NICEST) - PerspHint = GL_DONT_CARE; - else - PerspHint = GL_FASTEST; - glHint(GL_PERSPECTIVE_CORRECTION_HINT, PerspHint); - break; - default: - return; - } - glutPostRedisplay(); -} - - -int -main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (500, 500); - glutCreateWindow (argv[0]); - glutReshapeFunc (reshape); - glutDisplayFunc(display); - glutKeyboardFunc(key); - - printf("Main quad: perspective projection\n"); - printf("Middle stripe: linear interpolation\n"); - printf("Press 'i' to toggle interpolation hint\n"); - init(); - - glutMainLoop(); - return 0; -} |