Mercurial > sdl-ios-xcode
changeset 5238:ce4f91138031
Added a hint to control whether the OpenGL driver uses shaders.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Tue, 08 Feb 2011 22:40:19 -0800 |
parents | 74bc160186a8 |
children | af8ca17f6b7c |
files | include/SDL_hints.h src/render/opengl/SDL_render_gl.c |
diffstat | 2 files changed, 24 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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:
--- 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 */