[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