diff options
author | Johannes Schickel | 2016-03-04 16:08:28 +0100 |
---|---|---|
committer | Johannes Schickel | 2016-03-16 20:29:31 +0100 |
commit | 17b1124a5aa294d39cf3a3c6fc6561f835affe2d (patch) | |
tree | 8e7d33263f41ed6f5e874908c996a7e7df3ed1df /backends/graphics | |
parent | 1e1272a8c4c54d43f076d5a0153db36ee8cbeb42 (diff) | |
download | scummvm-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.cpp | 11 |
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) { |