diff options
Diffstat (limited to 'progs/tests/texcompsub.c')
-rw-r--r-- | progs/tests/texcompsub.c | 183 |
1 files changed, 0 insertions, 183 deletions
diff --git a/progs/tests/texcompsub.c b/progs/tests/texcompsub.c deleted file mode 100644 index 215f5711d9..0000000000 --- a/progs/tests/texcompsub.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Test texture compression. - */ - - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "texcomp_image.h" - -static int ImgWidth = 512; -static int ImgHeight = 512; -static GLenum CompFormat = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; -static GLfloat EyeDist = 5.0; -static GLfloat Rot = 0.0; -const GLenum Target = GL_TEXTURE_2D; - - -static void -CheckError(int line) -{ - GLenum err = glGetError(); - if (err) { - printf("GL Error %d at line %d\n", (int) err, line); - } -} - -static void -LoadCompressedImage(void) -{ - unsigned char ImgDataTemp[ImgSize / 4]; - unsigned i; - const GLenum filter = GL_LINEAR; - const int half = ImgSize / 2; - - glTexImage2D(Target, 0, CompFormat, ImgWidth, ImgHeight, 0, - GL_RGB, GL_UNSIGNED_BYTE, NULL); - - /* bottom half */ - glCompressedTexSubImage2DARB(Target, 0, - 0, 0, /* pos */ - ImgWidth, ImgHeight / 2, - CompFormat, ImgSize / 2, ImgData /*+ ImgSize / 2*/); - - /* top left */ - for (i = 0; i < ImgHeight / 8; i++) { - memcpy(&ImgDataTemp[i * ImgWidth], &ImgData[half + i * 2 * ImgWidth], ImgWidth); - } - glCompressedTexSubImage2DARB(Target, 0, - 0, ImgHeight / 2, /* pos */ - ImgWidth / 2, ImgHeight / 2, - CompFormat, ImgSize / 4, ImgDataTemp); - - /* top right */ - for (i = 0; i < ImgHeight / 8; i++) { - memcpy(&ImgDataTemp[i * ImgWidth], &ImgData[half + i * 2 * ImgWidth + ImgWidth], ImgWidth); - } - glCompressedTexSubImage2DARB(Target, 0, - ImgWidth / 2, ImgHeight / 2, /* pos */ - ImgWidth / 2, ImgHeight / 2, - CompFormat, ImgSize / 4, ImgDataTemp); - - glTexParameteri(Target, GL_TEXTURE_MIN_FILTER, filter); - glTexParameteri(Target, GL_TEXTURE_MAG_FILTER, filter); -} - -static void -Init() -{ - GLint numFormats, formats[100]; - GLint p; - - if (!glutExtensionSupported("GL_ARB_texture_compression")) { - printf("Sorry, GL_ARB_texture_compression is required.\n"); - exit(1); - } - if (!glutExtensionSupported("GL_EXT_texture_compression_s3tc")) { - printf("Sorry, GL_EXT_texture_compression_s3tc is required.\n"); - exit(1); - } - - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB, &numFormats); - glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS_ARB, formats); - printf("%d supported compression formats: ", numFormats); - for (p = 0; p < numFormats; p++) - printf("0x%x ", formats[p]); - printf("\n"); - - glEnable(GL_TEXTURE_2D); - - LoadCompressedImage(); -} - - -static void -Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum(-1, 1, -1, 1, 4, 100); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); -} - - -static void -Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'd': - EyeDist -= 1.0; - if (EyeDist < 4.0) - EyeDist = 4.0; - break; - case 'D': - EyeDist += 1.0; - break; - case 'z': - Rot += 5.0; - break; - case 'Z': - Rot -= 5.0; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -Draw( void ) -{ - glClearColor(0.3, 0.3, .8, 0); - glClear(GL_COLOR_BUFFER_BIT); - - CheckError(__LINE__); - glPushMatrix(); - glTranslatef(0, 0, -(EyeDist+0.01)); - glRotatef(Rot, 0, 0, 1); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex2f(-1, -1); - glTexCoord2f(1, 0); glVertex2f( 1, -1); - glTexCoord2f(1, 1); glVertex2f( 1, 1); - glTexCoord2f(0, 1); glVertex2f(-1, 1); - glEnd(); - glPopMatrix(); - - glutSwapBuffers(); -} - - -int -main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowSize( 600, 600 ); - - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE); - - glutCreateWindow(argv[0]); - glewInit(); - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Draw ); - - Init(); - - glutMainLoop(); - return 0; -} |