[Scummvm-git-logs] scummvm master -> 248a2c8702206c48d3762911881609a9f80111af

aquadran noreply at scummvm.org
Tue Jun 10 20:23:44 UTC 2025


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
248a2c8702 WINTERMUTE: Fixed blending mode for 3d renderer


Commit: 248a2c8702206c48d3762911881609a9f80111af
    https://github.com/scummvm/scummvm/commit/248a2c8702206c48d3762911881609a9f80111af
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2025-06-10T22:23:40+02:00

Commit Message:
WINTERMUTE: Fixed blending mode for 3d renderer

Changed paths:
    engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
    engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp


diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
index 340a79319bd..8f05d7d9ed8 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
@@ -124,6 +124,12 @@ bool BaseRenderOpenGL3D::initRenderer(int width, int height, bool windowed) {
 
 bool BaseRenderOpenGL3D::flip() {
 	_lastTexture = nullptr;
+
+	// Store blend mode and cull face mode
+	GLboolean stateBlend, cullState;
+	glGetBooleanv(GL_BLEND, &stateBlend);
+	glGetBooleanv(GL_CULL_FACE, &cullState);
+	
 	postfilter();
 
 	// Disable blend mode and cull face to prevent interfere with backend renderer
@@ -132,6 +138,17 @@ bool BaseRenderOpenGL3D::flip() {
 
 	g_system->updateScreen();
 
+	// Restore blend mode and cull face state
+	if (stateBlend)
+		glEnable(GL_BLEND);
+	else
+		glDisable(GL_BLEND);
+
+	if (cullState)
+		glEnable(GL_CULL_FACE);
+	else
+		glDisable(GL_CULL_FACE);
+
 	_state = RSTATE_NONE;
 	return true;
 }
@@ -408,7 +425,6 @@ bool BaseRenderOpenGL3D::drawSpriteEx(BaseSurface *tex, const Wintermute::Rect32
 	glEnableClientState(GL_COLOR_ARRAY);
 	glEnableClientState(GL_VERTEX_ARRAY);
 	glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-	glDisableClientState(GL_NORMAL_ARRAY);
 
 	glVertexPointer(3, GL_FLOAT, sizeof(SpriteVertex), &vertices[0].x);
 	glTexCoordPointer(2, GL_FLOAT, sizeof(SpriteVertex), &vertices[0].u);
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
index 8d1b682691e..b65707410d0 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
@@ -208,6 +208,12 @@ bool BaseRenderOpenGL3DShader::initRenderer(int width, int height, bool windowed
 
 bool BaseRenderOpenGL3DShader::flip() {
 	_lastTexture = nullptr;
+
+	// Store blend mode and cull face mode
+	GLboolean stateBlend, cullState;
+	glGetBooleanv(GL_BLEND, &stateBlend);
+	glGetBooleanv(GL_CULL_FACE, &cullState);
+
 	postfilter();
 
 	// Disable blend mode and cull face to prevent interfere with backend renderer
@@ -216,6 +222,17 @@ bool BaseRenderOpenGL3DShader::flip() {
 
 	g_system->updateScreen();
 
+	// Restore blend mode and cull face state
+	if (stateBlend)
+		glEnable(GL_BLEND);
+	else
+		glDisable(GL_BLEND);
+
+	if (cullState)
+		glEnable(GL_CULL_FACE);
+	else
+		glDisable(GL_CULL_FACE);
+
 	_state = RSTATE_NONE;
 	return true;
 }




More information about the Scummvm-git-logs mailing list