[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