aboutsummaryrefslogtreecommitdiff
path: root/backends/graphics
diff options
context:
space:
mode:
authorJohannes Schickel2016-03-04 16:08:28 +0100
committerJohannes Schickel2016-03-16 20:29:31 +0100
commit17b1124a5aa294d39cf3a3c6fc6561f835affe2d (patch)
tree8e7d33263f41ed6f5e874908c996a7e7df3ed1df /backends/graphics
parent1e1272a8c4c54d43f076d5a0153db36ee8cbeb42 (diff)
downloadscummvm-rg350-17b1124a5aa294d39cf3a3c6fc6561f835affe2d.tar.gz
scummvm-rg350-17b1124a5aa294d39cf3a3c6fc6561f835affe2d.tar.bz2
scummvm-rg350-17b1124a5aa294d39cf3a3c6fc6561f835affe2d.zip
OPENGL: Do not keep uniform state for nonexistent uniforms.
Diffstat (limited to 'backends/graphics')
-rw-r--r--backends/graphics/opengl/shader.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/backends/graphics/opengl/shader.cpp b/backends/graphics/opengl/shader.cpp
index 652da57dfa..27981f25dc 100644
--- a/backends/graphics/opengl/shader.cpp
+++ b/backends/graphics/opengl/shader.cpp
@@ -231,8 +231,14 @@ bool Shader::setUniform(const Common::String &name, ShaderUniformValue *value) {
Uniform *uniform;
if (uniformIter == _uniforms.end()) {
+ const GLint location = getUniformLocation(name.c_str());
+ if (location == -1) {
+ delete value;
+ return false;
+ }
+
uniform = &_uniforms[name];
- uniform->location = getUniformLocation(name.c_str());
+ uniform->location = location;
} else {
uniform = &uniformIter->_value;
}
@@ -242,7 +248,8 @@ bool Shader::setUniform(const Common::String &name, ShaderUniformValue *value) {
if (_isActive) {
uniform->set();
}
- return uniform->location != -1;
+
+ return true;
}
GLshader Shader::compileShader(const char *source, GLenum shaderType) {