diff options
author | Johannes Schickel | 2016-03-04 00:14:22 +0100 |
---|---|---|
committer | Johannes Schickel | 2016-03-16 20:29:31 +0100 |
commit | 39100b613272523c2e36be213cc827857a08f824 (patch) | |
tree | 975c372986e91cd3f5f35b506e674466eb321fb6 /backends/graphics/opengl/shader.cpp | |
parent | baca885cfce10acaa7a9892133aaa5b82c7183f7 (diff) | |
download | scummvm-rg350-39100b613272523c2e36be213cc827857a08f824.tar.gz scummvm-rg350-39100b613272523c2e36be213cc827857a08f824.tar.bz2 scummvm-rg350-39100b613272523c2e36be213cc827857a08f824.zip |
OPENGL: Do not hardcode any uniform/attribute handling in Shader.
Diffstat (limited to 'backends/graphics/opengl/shader.cpp')
-rw-r--r-- | backends/graphics/opengl/shader.cpp | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/backends/graphics/opengl/shader.cpp b/backends/graphics/opengl/shader.cpp index 59749ba1f0..652da57dfa 100644 --- a/backends/graphics/opengl/shader.cpp +++ b/backends/graphics/opengl/shader.cpp @@ -159,10 +159,6 @@ bool Shader::recreate() { GL_CALL(glAttachShader(_program, vertexShader)); GL_CALL(glAttachShader(_program, fragmentShader)); - GL_CALL(glBindAttribLocation(_program, kPositionAttribLocation, "position")); - GL_CALL(glBindAttribLocation(_program, kTexCoordAttribLocation, "texCoordIn")); - GL_CALL(glBindAttribLocation(_program, kColorAttribLocation, "blendColorIn")); - GL_CALL(glLinkProgram(_program)); GL_CALL(glDetachShader(_program, fragmentShader)); @@ -199,18 +195,6 @@ bool Shader::recreate() { } } - if (getUniformLocation("projection") == -1) { - warning("Shader misses \"projection\" uniform."); - destroy(); - return false; - } - - if (!setUniform1I("texture", 0)) { - warning("Shader misses \"texture\" uniform."); - destroy(); - return false; - } - return true; } @@ -230,6 +214,12 @@ void Shader::deactivate() { _isActive = false; } +GLint Shader::getAttributeLocation(const char *name) const { + GLint result = -1; + GL_ASSIGN(result, glGetAttribLocation(_program, name)); + return result; +} + GLint Shader::getUniformLocation(const char *name) const { GLint result = -1; GL_ASSIGN(result, glGetUniformLocation(_program, name)); @@ -310,6 +300,10 @@ void ShaderManager::notifyCreate() { _builtIn[kDefault] = new Shader(g_defaultVertexShader, g_defaultFragmentShader); _builtIn[kCLUT8LookUp] = new Shader(g_defaultVertexShader, g_lookUpFragmentShader); _builtIn[kCLUT8LookUp]->setUniform1I("palette", 1); + + for (uint i = 0; i < kMaxUsages; ++i) { + _builtIn[i]->setUniform1I("texture", 0); + } } else { for (int i = 0; i < ARRAYSIZE(_builtIn); ++i) { _builtIn[i]->recreate(); |