aboutsummaryrefslogtreecommitdiff
path: root/backends/graphics/opengl/shader.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2016-03-04 00:14:22 +0100
committerJohannes Schickel2016-03-16 20:29:31 +0100
commit39100b613272523c2e36be213cc827857a08f824 (patch)
tree975c372986e91cd3f5f35b506e674466eb321fb6 /backends/graphics/opengl/shader.cpp
parentbaca885cfce10acaa7a9892133aaa5b82c7183f7 (diff)
downloadscummvm-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.cpp26
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();