[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