diff options
author | Johannes Schickel | 2016-01-04 11:38:21 +0100 |
---|---|---|
committer | Johannes Schickel | 2016-03-16 20:29:27 +0100 |
commit | 0fe580d10c6fb73a90eccb046c8dcbf84b062b16 (patch) | |
tree | 374a7e245e5b39caa120de0ae9c4e3d19dba60ee /backends/graphics/opengl/texture.cpp | |
parent | 0b46af2f0e5eef939daa73d5b38b6b817c78c7d8 (diff) | |
download | scummvm-rg350-0fe580d10c6fb73a90eccb046c8dcbf84b062b16.tar.gz scummvm-rg350-0fe580d10c6fb73a90eccb046c8dcbf84b062b16.tar.bz2 scummvm-rg350-0fe580d10c6fb73a90eccb046c8dcbf84b062b16.zip |
OPENGL: Make shader/framebuffer part of pipeline state.
Diffstat (limited to 'backends/graphics/opengl/texture.cpp')
-rw-r--r-- | backends/graphics/opengl/texture.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/backends/graphics/opengl/texture.cpp b/backends/graphics/opengl/texture.cpp index 02e1b2c325..05b7ac1896 100644 --- a/backends/graphics/opengl/texture.cpp +++ b/backends/graphics/opengl/texture.cpp @@ -657,7 +657,7 @@ void TextureCLUT8GPU::updateTextures() { _paletteDirty = false; } - // In case any data changed, do color look up and save result in _glTexture. + // In case any data changed, do color look up and store result in _target. if (needLookUp) { lookUpColors(); } @@ -665,10 +665,11 @@ void TextureCLUT8GPU::updateTextures() { void TextureCLUT8GPU::lookUpColors() { // Save old state. - GLint oldProgram = 0; - GL_CALL(glGetIntegerv(GL_CURRENT_PROGRAM, &oldProgram)); + Framebuffer *oldFramebuffer = g_context.activePipeline->setFramebuffer(_target); - Framebuffer *oldFramebuffer = g_context.setFramebuffer(_target); + Shader *lookUpShader = ShaderMan.query(ShaderManager::kCLUT8LookUp); + Shader *oldShader = g_context.activePipeline->setShader(lookUpShader); + lookUpShader->setUniformI(_paletteLocation, 1); // Set the palette texture. GL_CALL(glActiveTexture(GL_TEXTURE1)); @@ -679,16 +680,12 @@ void TextureCLUT8GPU::lookUpColors() { _clut8Texture.bind(); // Do color look up. - Shader *lookUpShader = ShaderMan.query(ShaderManager::kCLUT8LookUp); - lookUpShader->activate(_target->getProjectionMatrix()); - lookUpShader->setUniformI(_paletteLocation, 1); g_context.activePipeline->setDrawCoordinates(_clut8Vertices, _clut8Texture.getTexCoords()); GL_CALL(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)); // Restore old state. - g_context.setFramebuffer(oldFramebuffer); - - GL_CALL(glUseProgram(oldProgram)); + g_context.activePipeline->setShader(oldShader); + g_context.activePipeline->setFramebuffer(oldFramebuffer); } #endif // !USE_FORCED_GLES |