# HG changeset patch # User Sam Lantinga # Date 1297233619 28800 # Node ID ce4f911380316cd408662a6579f4ddeef08a8812 # Parent 74bc160186a8013b9de961de383a7e2cb18863b2 Added a hint to control whether the OpenGL driver uses shaders. diff -r 74bc160186a8 -r ce4f91138031 include/SDL_hints.h --- a/include/SDL_hints.h Tue Feb 08 22:11:16 2011 -0800 +++ b/include/SDL_hints.h Tue Feb 08 22:40:19 2011 -0800 @@ -77,12 +77,27 @@ * This variable is case insensitive and can be set to the following values: * "direct3d" * "opengl" + * "opengles2" * "opengles" * "software" + * + * The default varies by platform, but it's the first one in the list that + * is available on the current platform. */ #define SDL_HINT_RENDER_DRIVER "SDL_RENDER_DRIVER" /** + * \brief A variable controlling whether the OpenGL render driver uses shaders if they are available. + * + * This variable can be set to the following values: + * "0" - Disable shaders + * "1" - Enable shaders + * + * By default shaders are used if OpenGL supports them. + */ +#define SDL_HINT_RENDER_OPENGL_SHADERS "SDL_RENDER_OPENGL_SHADERS" + +/** * \brief A variable controlling whether updates to the SDL 1.2 screen surface should be synchronized with the vertical refresh, to avoid tearing. * * This variable can be set to the following values: diff -r 74bc160186a8 -r ce4f91138031 src/render/opengl/SDL_render_gl.c --- a/src/render/opengl/SDL_render_gl.c Tue Feb 08 22:11:16 2011 -0800 +++ b/src/render/opengl/SDL_render_gl.c Tue Feb 08 22:40:19 2011 -0800 @@ -23,6 +23,8 @@ #if SDL_VIDEO_RENDER_OGL && !SDL_RENDER_DISABLED +#include "SDL_hints.h" +#include "SDL_log.h" #include "SDL_opengl.h" #include "../SDL_sysrender.h" #include "SDL_shaders_gl.h" @@ -183,6 +185,7 @@ { SDL_Renderer *renderer; GL_RenderData *data; + const char *hint; GLint value; Uint32 window_flags; @@ -282,7 +285,12 @@ } /* Check for shader support */ - data->shaders = GL_CreateShaderContext(); + hint = SDL_GetHint(SDL_HINT_RENDER_OPENGL_SHADERS); + if (!hint || *hint != '0') { + data->shaders = GL_CreateShaderContext(); + } + SDL_LogInfo(SDL_LOG_CATEGORY_RENDER, "OpenGL shaders: %s", + data->shaders ? "ENABLED" : "DISABLED"); #if 0 /* We support YV12 textures using 3 textures and a shader */