From 9de246ceb9eeae2bb4ea7aa8e4e8e18e9769c3cd Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 18 Nov 2009 08:07:37 +0000 Subject: [PATCH] Fixed GL_RenderReadPixels() - thanks Ryan! --- src/video/SDL_renderer_gl.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/video/SDL_renderer_gl.c b/src/video/SDL_renderer_gl.c index 8e419ce00..24a62c5c0 100644 --- a/src/video/SDL_renderer_gl.c +++ b/src/video/SDL_renderer_gl.c @@ -1257,6 +1257,7 @@ GL_RenderReadPixels(SDL_Renderer * renderer, const SDL_Rect * rect, Uint32 pixel_format, void * pixels, int pitch) { GL_RenderData *data = (GL_RenderData *) renderer->driverdata; + SDL_Window *window = SDL_GetWindowFromID(renderer->window); GLint internalFormat; GLenum format, type; Uint8 *src, *dst, *tmp; @@ -1276,13 +1277,10 @@ GL_RenderReadPixels(SDL_Renderer * renderer, const SDL_Rect * rect, data->glPixelStorei(GL_PACK_ALIGNMENT, 1); data->glPixelStorei(GL_PACK_ROW_LENGTH, (pitch / bytes_per_pixel(pixel_format))); - data->glReadBuffer(GL_FRONT); -memset(pixels, 0xff, rect->h*pitch); - data->glReadPixels(rect->x, rect->y+rect->h-1, rect->w, rect->h, + data->glReadPixels(rect->x, (window->h-rect->y)-rect->h, rect->w, rect->h, format, type, pixels); -#if 0 /* Flip the rows to be top-down */ length = rect->w * bytes_per_pixel(pixel_format); src = (Uint8*)pixels + (rect->h-1)*pitch; @@ -1293,9 +1291,10 @@ memset(pixels, 0xff, rect->h*pitch); SDL_memcpy(tmp, dst, length); SDL_memcpy(dst, src, length); SDL_memcpy(src, tmp, length); + dst += pitch; + src -= pitch; } SDL_stack_free(tmp); -#endif return 0; }