diff options
author | Eric Anholt <eric@anholt.net> | 2010-05-21 09:32:38 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2010-05-21 12:20:39 -0700 |
commit | 68fc4b415e322f6744299e39864fbc377c6eff74 (patch) | |
tree | 4bafffd8b0105174f3c5c0ae327a005be9145990 /progs/tests/floattex.c | |
parent | e4f4489e3fc0b36d72821b55794fb843b2b7fa5f (diff) |
Remove demos that have moved to git+ssh://git.freedesktop.org/git/mesa/demos.
The remaining programs are ones I've had difficulty finding a build
environment for to make the build system or are unit tests that should
probably live next to their code instead. Hopefully people can bring
over the build for remaining pieces they care about.
Diffstat (limited to 'progs/tests/floattex.c')
-rw-r--r-- | progs/tests/floattex.c | 238 |
1 files changed, 0 insertions, 238 deletions
diff --git a/progs/tests/floattex.c b/progs/tests/floattex.c deleted file mode 100644 index 39302ce3af..0000000000 --- a/progs/tests/floattex.c +++ /dev/null @@ -1,238 +0,0 @@ -/* - * Test floating point textures. - */ - - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include "extfuncs.h" -#include "readtex.h" -#include "shaderutil.h" - - -static const char *TexFile = "../images/arch.rgb"; - -static const char *FragShaderText = - "uniform sampler2D tex1; \n" - "void main() \n" - "{ \n" - " vec4 t = texture2D(tex1, gl_TexCoord[0].xy); \n" - " // convert from [-255,0] to [0,1] \n" - " gl_FragColor = t * (-1.0 / 255.0); \n" - "} \n"; - -static const char *VertShaderText = - "void main() \n" - "{ \n" - " gl_TexCoord[0] = gl_MultiTexCoord0; \n" - " gl_Position = ftransform(); \n" - "} \n"; - -static struct uniform_info Uniforms[] = { - { "tex1", 1, GL_SAMPLER_2D, { 0, 0, 0, 0 }, -1 }, - END_OF_UNIFORMS -}; - - -static GLuint Program; - - - -static GLboolean -CheckError( int line ) -{ - GLenum error = glGetError(); - if (error) { - char *err = (char *) gluErrorString( error ); - fprintf( stderr, "GL Error: %s at line %d\n", err, line ); - return GL_TRUE; - } - return GL_FALSE; -} - - -static void -Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - - glBegin(GL_POLYGON); - glTexCoord2f( 0.0, 0.0 ); glVertex2f( -1.0, -1.0 ); - glTexCoord2f( 1.0, 0.0 ); glVertex2f( 1.0, -1.0 ); - glTexCoord2f( 1.0, 1.0 ); glVertex2f( 1.0, 1.0 ); - glTexCoord2f( 0.0, 1.0 ); glVertex2f( -1.0, 1.0 ); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -8.0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -InitTexture(void) -{ - GLenum filter = GL_LINEAR; - GLint imgWidth, imgHeight; - GLenum imgFormat; - GLubyte *image = NULL; - GLfloat *ftex; - GLint i, t; - - image = LoadRGBImage(TexFile, &imgWidth, &imgHeight, &imgFormat); - if (!image) { - printf("Couldn't read %s\n", TexFile); - exit(0); - } - - assert(imgFormat == GL_RGB); - - ftex = (float *) malloc(imgWidth * imgHeight * 4 * sizeof(float)); - if (!ftex) { - printf("out of memory\n"); - exit(0); - } - - /* convert ubytes to floats, negated */ - for (i = 0; i < imgWidth * imgHeight * 3; i++) { - ftex[i] = -1.0f * image[i]; - } - - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, 42); - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F_ARB, - imgWidth, imgHeight, 0, - GL_RGB, GL_FLOAT, ftex); - - - CheckError(__LINE__); - - /* sanity checks */ - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_RED_TYPE_ARB, &t); - assert(t == GL_FLOAT); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_GREEN_TYPE_ARB, &t); - assert(t == GL_FLOAT); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_BLUE_TYPE_ARB, &t); - assert(t == GL_FLOAT); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_ALPHA_TYPE_ARB, &t); - assert(t == GL_FLOAT); - - free(image); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); - - if (1) { - /* read back the texture and make sure values are correct */ - GLfloat *tex2 = (GLfloat *) - malloc(imgWidth * imgHeight * 4 * sizeof(GLfloat)); - glGetTexImage(GL_TEXTURE_2D, 0, imgFormat, GL_FLOAT, tex2); - CheckError(__LINE__); - for (i = 0; i < imgWidth * imgHeight * 4; i++) { - if (ftex[i] != tex2[i]) { - printf("tex[%d] %g != tex2[%d] %g\n", - i, ftex[i], i, tex2[i]); - } - } - } - - free(ftex); -} - - -static GLuint -CreateProgram(void) -{ - GLuint fragShader, vertShader, program; - - vertShader = CompileShaderText(GL_VERTEX_SHADER, VertShaderText); - fragShader = CompileShaderText(GL_FRAGMENT_SHADER, FragShaderText); - assert(vertShader); - program = LinkShaders(vertShader, fragShader); - - assert(program); - - glUseProgram_func(program); - - SetUniformValues(program, Uniforms); - - return program; -} - - -static void -Init(void) -{ - glClearColor(0.25, 0.25, 0.25, 0.0); - - GetExtensionFuncs(); - - if (!ShadersSupported()) { - printf("Sorry, this test requires GLSL\n"); - exit(1); - } - - if (!glutExtensionSupported("GL_MESAX_texture_float") && - !glutExtensionSupported("GL_ARB_texture_float")) { - printf("Sorry, this test requires GL_MESAX/ARB_texture_float\n"); - exit(1); - } - - InitTexture(); - - Program = CreateProgram(); - glUseProgram_func(Program); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(400, 400); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - Init(); - glutMainLoop(); - return 0; -} |