Răsfoiți Sursa

Fixed UV texture coordinate scale when using GL_ARB_texture_non_power_of_two

Sam Lantinga 10 ani în urmă
părinte
comite
877666e237
1 a modificat fișierele cu 8 adăugiri și 4 ștergeri
  1. 8 4
      src/render/opengl/SDL_shaders_gl.c

+ 8 - 4
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 */