[Scummvm-git-logs] scummvm master -> 0fe0cbc93f6ee5cdecb97fe0938ccd9b8f43f2a9
lephilousophe
noreply at scummvm.org
Wed Aug 14 18:48:20 UTC 2024
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
0fe0cbc93f BACKENDS: OPENGL: Fix save and restore of GL_BLEND functions
Commit: 0fe0cbc93f6ee5cdecb97fe0938ccd9b8f43f2a9
https://github.com/scummvm/scummvm/commit/0fe0cbc93f6ee5cdecb97fe0938ccd9b8f43f2a9
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2024-08-14T20:47:23+02:00
Commit Message:
BACKENDS: OPENGL: Fix save and restore of GL_BLEND functions
All functions must be set at once.
Changed paths:
backends/graphics3d/opengl/surfacerenderer.cpp
backends/graphics3d/opengl/surfacerenderer.h
diff --git a/backends/graphics3d/opengl/surfacerenderer.cpp b/backends/graphics3d/opengl/surfacerenderer.cpp
index 76286d0e078..db4fbf47b22 100644
--- a/backends/graphics3d/opengl/surfacerenderer.cpp
+++ b/backends/graphics3d/opengl/surfacerenderer.cpp
@@ -238,7 +238,10 @@ void ShaderSurfaceRenderer::prepareState() {
glGetBooleanv(GL_DEPTH_WRITEMASK, &_prevStateDepthWriteMask);
glDepthMask(GL_FALSE);
_prevStateBlend = glIsEnabled(GL_BLEND);
- glGetIntegerv(GL_BLEND_SRC_ALPHA, &_prevStateBlendFunc);
+ glGetIntegerv(GL_BLEND_SRC_RGB, &_prevStateBlendSrcRGB);
+ glGetIntegerv(GL_BLEND_DST_RGB, &_prevStateBlendDstRGB);
+ glGetIntegerv(GL_BLEND_SRC_ALPHA, &_prevStateBlendSrcAlpha);
+ glGetIntegerv(GL_BLEND_DST_ALPHA, &_prevStateBlendDstAlpha);
glGetIntegerv(GL_VIEWPORT, _prevStateViewport);
_prevStateScissorTest = glIsEnabled(GL_SCISSOR_TEST);
glDisable(GL_SCISSOR_TEST);
@@ -264,7 +267,8 @@ void ShaderSurfaceRenderer::restorePreviousState() {
glDepthMask(_prevStateDepthWriteMask);
_prevStateScissorTest ? glEnable(GL_SCISSOR_TEST) : glDisable(GL_SCISSOR_TEST);
_prevStateBlend ? glEnable(GL_BLEND) : glDisable(GL_BLEND);
- glBlendFunc(GL_BLEND_SRC_ALPHA, _prevStateBlendFunc);
+ glBlendFuncSeparate(_prevStateBlendSrcRGB, _prevStateBlendDstRGB,
+ _prevStateBlendSrcAlpha, _prevStateBlendDstAlpha);
glViewport(_prevStateViewport[0], _prevStateViewport[1], _prevStateViewport[2], _prevStateViewport[3]);
_flipY = false;
diff --git a/backends/graphics3d/opengl/surfacerenderer.h b/backends/graphics3d/opengl/surfacerenderer.h
index 090a54ef46f..f07fbfa7b20 100644
--- a/backends/graphics3d/opengl/surfacerenderer.h
+++ b/backends/graphics3d/opengl/surfacerenderer.h
@@ -109,7 +109,10 @@ private:
GLboolean _prevStateDepthWriteMask;
GLboolean _prevStateBlend;
GLboolean _prevStateScissorTest;
- GLint _prevStateBlendFunc;
+ GLint _prevStateBlendSrcRGB;
+ GLint _prevStateBlendDstRGB;
+ GLint _prevStateBlendSrcAlpha;
+ GLint _prevStateBlendDstAlpha;
GLint _prevStateViewport[4];
};
More information about the Scummvm-git-logs
mailing list