Mercurial > sdl-ios-xcode
diff src/video/SDL_renderer_gl.c @ 3707:d8308bc267bc
Adam Strzelecki to SDL
When graphic card has no GL_ARB_texture_rectangle YUV textures mapped with SDL_RenderCopy are stretched 2x horizontally, so only left half of texture is visible. This is due:
data->texw = (GLfloat) (texture->w) / texture_w;
data->texh = (GLfloat) texture->h / texture_h;
But afterwards texture_w /= 2 for YUV texture, but data->texw stays as it was before, while it should be multiplied 2x.
This bug can be seen in any program setting env variables: GL_APPLE_ycbcr_422=0 GL_EXT_texture_rectangle=0 GL_ARB_texture_rectangle=0
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Wed, 17 Feb 2010 04:42:52 +0000 |
parents | f7b03b6838cb |
children | 6cf71111cf68 |
line wrap: on
line diff
--- a/src/video/SDL_renderer_gl.c Sun Feb 14 15:55:10 2010 +0000 +++ b/src/video/SDL_renderer_gl.c Wed Feb 17 04:42:52 2010 +0000 @@ -829,11 +829,14 @@ /* YUV formats use RGBA but are really two bytes per pixel */ if (internalFormat == GL_RGBA && bytes_per_pixel(texture->format) < 4) { + texture_w /= 2; + if (data->type == GL_TEXTURE_2D) { + data->texw *= 2.0f; + } data->HACK_RYAN_FIXME = 2; } else { data->HACK_RYAN_FIXME = 1; } - texture_w /= data->HACK_RYAN_FIXME; data->format = format; data->formattype = type;