From 39100b613272523c2e36be213cc827857a08f824 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Fri, 4 Mar 2016 00:14:22 +0100 Subject: OPENGL: Do not hardcode any uniform/attribute handling in Shader. --- backends/graphics/opengl/shader.cpp | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) (limited to 'backends/graphics/opengl/shader.cpp') 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(); -- cgit v1.2.3