Commit 877666e237f570f4ce2ad98c2c85e0347f806162

Sam Lantinga 2014-08-18T11:28:16

Fixed UV texture coordinate scale when using GL_ARB_texture_non_power_of_two

diff --git a/src/render/opengl/SDL_shaders_gl.c b/src/render/opengl/SDL_shaders_gl.c
index d8f60d4..a831890 100644
--- a/src/render/opengl/SDL_shaders_gl.c
+++ b/src/render/opengl/SDL_shaders_gl.c
@@ -150,7 +150,7 @@ static const char *shader_source[NUM_SHADERS][2] =
 "    yuv.x = texture2D(tex0, tcoord).r;\n"
 "\n"
 "    // Get the U and V values \n"
-"    tcoord *= 0.5;\n"
+"    tcoord *= UVCoordScale;\n"
 "    yuv.y = texture2D(tex1, tcoord).r;\n"
 "    yuv.z = texture2D(tex2, tcoord).r;\n"
 "\n"
@@ -201,7 +201,7 @@ static const char *shader_source[NUM_SHADERS][2] =
 "    yuv.x = texture2D(tex0, tcoord).r;\n"
 "\n"
 "    // Get the U and V values \n"
-"    tcoord *= 0.5;\n"
+"    tcoord *= UVCoordScale;\n"
 "    yuv.yz = texture2D(tex1, tcoord).ra;\n"
 "\n"
 "    // Do the color transform \n"
@@ -251,7 +251,7 @@ static const char *shader_source[NUM_SHADERS][2] =
 "    yuv.x = texture2D(tex0, tcoord).r;\n"
 "\n"
 "    // Get the U and V values \n"
-"    tcoord *= 0.5;\n"
+"    tcoord *= UVCoordScale;\n"
 "    yuv.yz = texture2D(tex1, tcoord).ar;\n"
 "\n"
 "    // Do the color transform \n"
@@ -318,7 +318,11 @@ CompileShaderProgram(GL_ShaderContext *ctx, int index, GL_ShaderData *data)
     if (ctx->GL_ARB_texture_rectangle_supported) {
         frag_defines =
 "#define sampler2D sampler2DRect\n"
-"#define texture2D texture2DRect\n";
+"#define texture2D texture2DRect\n"
+"#define UVCoordScale 0.5\n";
+    } else {
+        frag_defines = 
+"#define UVCoordScale 1.0\n";
     }
 
     /* Create one program object to rule them all */