Mercurial > sdl-ios-xcode
changeset 2843:e919f2e3700d
Fixed the shader fragment problems using 2 byte YUV data in a 4 byte RGB
texture. This is a total hack though. Maybe we should be using a different
texture format?
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 06 Dec 2008 18:22:28 +0000 |
parents | 97ba0be8b565 |
children | 70b63882d2ef |
files | src/video/SDL_renderer_gl.c |
diffstat | 1 files changed, 7 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/video/SDL_renderer_gl.c Sat Dec 06 17:50:50 2008 +0000 +++ b/src/video/SDL_renderer_gl.c Sat Dec 06 18:22:28 2008 +0000 @@ -184,6 +184,7 @@ void *pixels; int pitch; SDL_DirtyRectList dirty; +int HACK_RYAN_FIXME; } GL_TextureData; @@ -732,8 +733,11 @@ /* YUV formats use RGBA but are really two bytes per pixel */ if (internalFormat == GL_RGBA && bytes_per_pixel(texture->format) < 4) { - texture_w = (texture_w * bytes_per_pixel(texture->format)) / 4; +data->HACK_RYAN_FIXME = 2; + } else { +data->HACK_RYAN_FIXME = 1; } + texture_w /= data->HACK_RYAN_FIXME; data->format = format; data->formattype = type; @@ -863,7 +867,7 @@ } renderdata->glPixelStorei(GL_UNPACK_ALIGNMENT, 1); renderdata->glPixelStorei(GL_UNPACK_ROW_LENGTH, - pitch / bytes_per_pixel(texture->format)); + (pitch / bytes_per_pixel(texture->format) / ((GL_TextureData *)texture->driverdata)->HACK_RYAN_FIXME)); } static int @@ -1011,7 +1015,7 @@ rect->x * bpp); printf("texsubimage2d(%d,%d,%d,%d)\n", (int) rect->x, (int) rect->y, (int) rect->w, (int) rect->h); data->glTexSubImage2D(texturedata->type, 0, rect->x, rect->y, - rect->w, rect->h, texturedata->format, + rect->w / texturedata->HACK_RYAN_FIXME, rect->h, texturedata->format, texturedata->formattype, pixels); } SDL_ClearDirtyRects(&texturedata->dirty);