From a7f806bb4edbe70b73e37db3391eb5b6ae0077a3 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 6 Feb 2011 10:59:37 -0800 Subject: [PATCH] Fixed compiling source shaders --- src/render/opengles2/SDL_render_gles2.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index 3a1a1de99..d79f60168 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -608,7 +608,7 @@ GLES2_CacheShader(SDL_Renderer *renderer, GLES2_ShaderType type, SDL_BlendMode b entry->id = glCreateShader(instance->type); if (instance->format == (GLenum)-1) { - glShaderSource(entry->id, 1, (const char **)&instance->data, &instance->length); + glShaderSource(entry->id, 1, (const char **)&instance->data, NULL); glCompileShader(entry->id); glGetShaderiv(entry->id, GL_COMPILE_STATUS, &compileSuccessful); } @@ -619,7 +619,22 @@ GLES2_CacheShader(SDL_Renderer *renderer, GLES2_ShaderType type, SDL_BlendMode b } if (glGetError() != GL_NO_ERROR || !compileSuccessful) { - SDL_SetError("Failed to load the specified shader"); + char *info = NULL; + int length; + + glGetShaderiv(entry->id, GL_INFO_LOG_LENGTH, &length); + if (length > 0) { + info = SDL_stack_alloc(char, length); + if (info) { + glGetShaderInfoLog(entry->id, length, &length, info); + } + } + if (info) { + SDL_SetError("Failed to load the shader: %s", info); + SDL_stack_free(info); + } else { + SDL_SetError("Failed to load the shader"); + } glDeleteShader(entry->id); SDL_free(entry); return NULL;