[Scummvm-git-logs] scummvm master -> 476f76a96c2f206ca6e3881ef1cc44d8d3d8445a

aquadran noreply at scummvm.org
Sun Nov 3 07:21:57 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:
476f76a96c WINTERMUTE: Move skipping 3D drawing in backend renderer instead in core engine


Commit: 476f76a96c2f206ca6e3881ef1cc44d8d3d8445a
    https://github.com/scummvm/scummvm/commit/476f76a96c2f206ca6e3881ef1cc44d8d3d8445a
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2024-11-03T08:21:51+01:00

Commit Message:
WINTERMUTE: Move skipping 3D drawing in backend renderer instead in core engine

Changed paths:
    engines/wintermute/base/gfx/opengl/meshx_opengl.cpp
    engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp
    engines/wintermute/base/gfx/xmodel.cpp


diff --git a/engines/wintermute/base/gfx/opengl/meshx_opengl.cpp b/engines/wintermute/base/gfx/opengl/meshx_opengl.cpp
index 517b6bb4b08..2ee163dd8c4 100644
--- a/engines/wintermute/base/gfx/opengl/meshx_opengl.cpp
+++ b/engines/wintermute/base/gfx/opengl/meshx_opengl.cpp
@@ -27,6 +27,8 @@
 
 #include "engines/wintermute/base/gfx/xmaterial.h"
 #include "engines/wintermute/base/gfx/skin_mesh_helper.h"
+#include "engines/wintermute/base/base_game.h"
+#include "engines/wintermute/base/gfx/base_renderer3d.h"
 
 #include "graphics/opengl/system_headers.h"
 
@@ -50,6 +52,11 @@ bool XMeshOpenGL::render(XModel *model) {
 	if (!_blendedMesh)
 		return false;
 
+	// For WME DX, mesh model is not visible, possible it's clipped.
+	// For OpenGL, mesh is visible, skip draw it here instead in core.
+	if (!_gameRef->_renderer3D->_camera)
+		return false;
+
 	auto fvf = _blendedMesh->getFVF();
 	uint32 vertexSize = DXGetFVFVertexSize(fvf) / sizeof(float);
 	float *vertexData = (float *)_blendedMesh->getVertexBuffer().ptr();
diff --git a/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp b/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp
index 12de425b9a3..74f343225fd 100644
--- a/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp
+++ b/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp
@@ -27,6 +27,8 @@
 
 #include "engines/wintermute/base/gfx/xmaterial.h"
 #include "engines/wintermute/base/gfx/skin_mesh_helper.h"
+#include "engines/wintermute/base/gfx/base_renderer3d.h"
+#include "engines/wintermute/base/base_game.h"
 
 #include "graphics/opengl/system_headers.h"
 
@@ -75,6 +77,11 @@ bool XMeshOpenGLShader::render(XModel *model) {
 	if (!_blendedMesh)
 		return false;
 
+	// For WME DX, mesh model is not visible, possible it's clipped.
+	// For OpenGL, mesh is visible, skip draw it here instead in core.
+	if (!_gameRef->_renderer3D->_camera)
+		return false;
+
 	auto fvf = _blendedMesh->getFVF();
 	uint32 vertexSize = DXGetFVFVertexSize(fvf) / sizeof(float);
 	float *vertexData = (float *)_blendedMesh->getVertexBuffer().ptr();
diff --git a/engines/wintermute/base/gfx/xmodel.cpp b/engines/wintermute/base/gfx/xmodel.cpp
index 29acad2c3de..1385496a679 100644
--- a/engines/wintermute/base/gfx/xmodel.cpp
+++ b/engines/wintermute/base/gfx/xmodel.cpp
@@ -472,7 +472,7 @@ bool XModel::updateShadowVol(ShadowVolume *shadow, DXMatrix *modelMat, DXVector3
 bool XModel::render() {
 	if (_rootFrame) {
 		// set culling
-		if(_owner && !_owner->_drawBackfaces) {
+		if (_owner && !_owner->_drawBackfaces) {
 			_gameRef->_renderer3D->enableCulling();
 		} else {
 			_gameRef->_renderer3D->disableCulling();




More information about the Scummvm-git-logs mailing list