Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Adam Strzelecki to SDL
Browse files Browse the repository at this point in the history
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
  • Loading branch information
slouken committed Feb 17, 2010
1 parent 01b9f12 commit 999aad1
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/video/SDL_renderer_gl.c
Expand Up @@ -829,11 +829,14 @@ GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)

/* 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;
Expand Down

0 comments on commit 999aad1

Please sign in to comment.