diff options
author | bobo1on1 <bobo1on1@svn> | 2010-03-07 18:13:15 +0000 |
---|---|---|
committer | bobo1on1 <bobo1on1@svn> | 2010-03-07 18:13:15 +0000 |
commit | 8626630144fc88624596b34e44f733407ccad32b (patch) | |
tree | aa82f9f17dc5915c64c118d6a1ad4cd19cca9fde /guilib/Shader.cpp | |
parent | cff04f37800cee655f4fc0150fd728d9e1ba3682 (diff) |
fixed: we can only validate the shader after binding the textures
git-svn-id: https://xbmc.svn.sourceforge.net/svnroot/xbmc/trunk@28452 568bbfeb-2a22-0410-94d2-cc84cf5bfa90
Diffstat (limited to 'guilib/Shader.cpp')
-rw-r--r-- | guilib/Shader.cpp | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/guilib/Shader.cpp b/guilib/Shader.cpp index 89c5ddd706..359350c396 100644 --- a/guilib/Shader.cpp +++ b/guilib/Shader.cpp @@ -352,19 +352,7 @@ bool CGLSLShaderProgram::CompileAndLink() } VerifyGLState(); - // validate the program - glValidateProgram(m_shaderProgram); - glGetProgramiv(m_shaderProgram, GL_VALIDATE_STATUS, params); - if (params[0]!=GL_TRUE) - { - GLchar log[LOG_SIZE]; - CLog::Log(LOGERROR, "GL: Error validating shader"); - glGetProgramInfoLog(m_shaderProgram, LOG_SIZE, NULL, log); - CLog::Log(LOGERROR, "%s", log); - goto error; - } - VerifyGLState(); - + m_validated = false; m_ok = true; OnCompiledAndLinked(); VerifyGLState(); @@ -388,6 +376,21 @@ bool CGLSLShaderProgram::Enable() glUseProgram(m_shaderProgram); if (OnEnabled()) { + if (!m_validated) + { + // validate the program + GLint params[4]; + glValidateProgram(m_shaderProgram); + glGetProgramiv(m_shaderProgram, GL_VALIDATE_STATUS, params); + if (params[0]!=GL_TRUE) + { + GLchar log[LOG_SIZE]; + CLog::Log(LOGERROR, "GL: Error validating shader"); + glGetProgramInfoLog(m_shaderProgram, LOG_SIZE, NULL, log); + CLog::Log(LOGERROR, "%s", log); + } + m_validated = true; + } VerifyGLState(); return true; } |