aboutsummaryrefslogtreecommitdiff
path: root/guilib/Shader.cpp
diff options
context:
space:
mode:
authorbobo1on1 <bobo1on1@svn>2010-03-07 18:13:15 +0000
committerbobo1on1 <bobo1on1@svn>2010-03-07 18:13:15 +0000
commit8626630144fc88624596b34e44f733407ccad32b (patch)
treeaa82f9f17dc5915c64c118d6a1ad4cd19cca9fde /guilib/Shader.cpp
parentcff04f37800cee655f4fc0150fd728d9e1ba3682 (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.cpp29
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;
}