summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSam Lantinga <slouken@libsdl.org>2012-01-10 21:00:47 -0500
committerSam Lantinga <slouken@libsdl.org>2012-01-10 21:00:47 -0500
commit12f10dc470a8c9b90147af3be226ab60bd8f7617 (patch)
tree23cec4aa919af857924135b9cf685fa212ba2b25 /src
parent4a43db2c68e599734b28221ba69e42d4886be9f4 (diff)
Fixed bug 1331 - SDL_CreateTextureFromSurface fails for OpenGL + Win XP 64 NVidia 285.58 with GL_INVALID_ENUM
I think this fixes the bug. I'm not sure why it would fail, and it may have something to do with the version of OpenGL that we initialize and use by default. Regardless, this should take care of the problem.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/render/opengl/SDL_render_gl.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c
index abd23b9f..5236f241 100755
--- a/src/render/opengl/SDL_render_gl.c
+++ b/src/render/opengl/SDL_render_gl.c
@@ -470,10 +470,15 @@ GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
renderdata->glBindTexture(data->type, data->texture);
renderdata->glTexParameteri(data->type, GL_TEXTURE_MIN_FILTER, scaleMode);
renderdata->glTexParameteri(data->type, GL_TEXTURE_MAG_FILTER, scaleMode);
- renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_S,
- GL_CLAMP_TO_EDGE);
- renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_T,
- GL_CLAMP_TO_EDGE);
+ /* According to the spec, CLAMP_TO_EDGE is the default for TEXTURE_RECTANGLE
+ and setting it causes an INVALID_ENUM error in the latest NVidia drivers.
+ */
+ if (data->type != GL_TEXTURE_RECTANGLE_ARB) {
+ renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_S,
+ GL_CLAMP_TO_EDGE);
+ renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_T,
+ GL_CLAMP_TO_EDGE);
+ }
#ifdef __MACOSX__
#ifndef GL_TEXTURE_STORAGE_HINT_APPLE
#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC