[Scummvm-git-logs] scummvm master -> 6688e2219585bca95550dcb4f85a06621ca65519
aquadran
noreply at scummvm.org
Sat Jul 16 10:53:29 UTC 2022
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:
6688e22195 WINTERMUTE: WME3D: Added game option to allow force 2d renderer for 2d games
Commit: 6688e2219585bca95550dcb4f85a06621ca65519
https://github.com/scummvm/scummvm/commit/6688e2219585bca95550dcb4f85a06621ca65519
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2022-07-16T12:53:25+02:00
Commit Message:
WINTERMUTE: WME3D: Added game option to allow force 2d renderer for 2d games
Changed paths:
engines/wintermute/base/base_game.cpp
engines/wintermute/base/base_game.h
engines/wintermute/detection.cpp
engines/wintermute/detection_tables.h
engines/wintermute/wintermute.cpp
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 208970010f9..31fd8d4c591 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -417,6 +417,14 @@ bool BaseGame::initConfManSettings() {
_smartCache = true;
}
+#ifdef ENABLE_WME3D
+ if (ConfMan.hasKey("force_2d_renderer")) {
+ _force2dRenderer = ConfMan.getBool("force_2d_renderer");
+ } else {
+ _force2dRenderer = false;
+ }
+#endif
+
if (!_smartCache) {
LOG(0, "Smart cache is DISABLED");
}
@@ -540,19 +548,20 @@ bool BaseGame::initialize2() { // we know whether we are going to be accelerated
Graphics::RendererType matchingRendererType = Graphics::Renderer::getBestMatchingType(desiredRendererType, availableRendererTypes);
+ bool force2dRenderer = _force2dRenderer && !_playing3DGame;
#if defined(USE_OPENGL_SHADERS)
- if (matchingRendererType == Graphics::kRendererTypeOpenGLShaders) {
+ if (!force2dRenderer && matchingRendererType == Graphics::kRendererTypeOpenGLShaders) {
initGraphics3d(_settings->getResWidth(), _settings->getResHeight());
_renderer3D = makeOpenGL3DShaderRenderer(this);
}
#endif // defined(USE_OPENGL_SHADERS)
#if defined(USE_OPENGL_GAME)
- if (matchingRendererType == Graphics::kRendererTypeOpenGL) {
+ if (!force2dRenderer && matchingRendererType == Graphics::kRendererTypeOpenGL) {
initGraphics3d(_settings->getResWidth(), _settings->getResHeight());
_renderer3D = makeOpenGL3DRenderer(this);
}
#endif // defined(USE_OPENGL)
- if (matchingRendererType == Graphics::kRendererTypeTinyGL) {
+ if (!force2dRenderer && matchingRendererType == Graphics::kRendererTypeTinyGL) {
if (_playing3DGame) {
_renderer3D = nullptr;// TODO: makeTinyGL3DRenderer(this);
warning("3D software renderer is not supported yet");
diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h
index 3913c8f3736..7c28fb4045e 100644
--- a/engines/wintermute/base/base_game.h
+++ b/engines/wintermute/base/base_game.h
@@ -315,6 +315,9 @@ protected:
private:
bool _debugShowFPS;
bool _bilinearFiltering;
+#ifdef ENABLE_WME3D
+ bool _force2dRenderer;
+#endif
void *_debugLogFile;
void DEBUG_DebugDisable();
void DEBUG_DebugEnable(const char *filename = nullptr);
diff --git a/engines/wintermute/detection.cpp b/engines/wintermute/detection.cpp
index 72444c8a42d..23f7757985d 100644
--- a/engines/wintermute/detection.cpp
+++ b/engines/wintermute/detection.cpp
@@ -70,6 +70,20 @@ static const ADExtraGuiOptionsMap gameGuiOptions[] = {
}
},
+#ifdef ENABLE_WME3D
+ {
+ GAMEOPTION_FORCE_2D_RENDERER,
+ {
+ _s("Force to use 2D renderer (2D games only)"),
+ _s("This setting forces ScummVM to use 2D renderer while running 2D games"),
+ "force_2d_renderer",
+ false,
+ 0,
+ 0
+ }
+ },
+#endif
+
AD_EXTRA_GUI_OPTIONS_TERMINATOR
};
@@ -86,7 +100,11 @@ public:
// Use kADFlagUseExtraAsHint to distinguish between SD and HD versions
// of J.U.L.I.A. when their datafiles sit in the same directory (e.g. in Steam distribution).
_flags = kADFlagUseExtraAsHint;
+#ifdef ENABLE_WME3D
+ _guiOptions = GUIO4(GUIO_NOMIDI, GAMEOPTION_SHOW_FPS, GAMEOPTION_BILINEAR, GAMEOPTION_FORCE_2D_RENDERER);
+#else
_guiOptions = GUIO3(GUIO_NOMIDI, GAMEOPTION_SHOW_FPS, GAMEOPTION_BILINEAR);
+#endif
_maxScanDepth = 2;
_directoryGlobs = directoryGlobs;
}
diff --git a/engines/wintermute/detection_tables.h b/engines/wintermute/detection_tables.h
index 8c3b437ada6..302acf1412c 100644
--- a/engines/wintermute/detection_tables.h
+++ b/engines/wintermute/detection_tables.h
@@ -21,8 +21,11 @@
namespace Wintermute {
-#define GAMEOPTION_SHOW_FPS GUIO_GAMEOPTIONS1
-#define GAMEOPTION_BILINEAR GUIO_GAMEOPTIONS2
+#define GAMEOPTION_SHOW_FPS GUIO_GAMEOPTIONS1
+#define GAMEOPTION_BILINEAR GUIO_GAMEOPTIONS2
+#ifdef ENABLE_WME3D
+#define GAMEOPTION_FORCE_2D_RENDERER GUIO_GAMEOPTIONS3
+#endif
static const PlainGameDescriptor wintermuteGames[] = {
{"5ld", "Five Lethal Demons"},
diff --git a/engines/wintermute/wintermute.cpp b/engines/wintermute/wintermute.cpp
index b53f20efb11..eb4e0625ce4 100644
--- a/engines/wintermute/wintermute.cpp
+++ b/engines/wintermute/wintermute.cpp
@@ -61,7 +61,7 @@ WintermuteEngine::WintermuteEngine(OSystem *syst, const WMEGameDescription *desc
// Put your engine in a sane state, but do nothing big yet;
// in particular, do not load data from files; rather, if you
// need to do such things, do them from init().
- ConfMan.registerDefault("show_fps","false");
+ ConfMan.registerDefault("show_fps", "false");
// Do not initialize graphics here
More information about the Scummvm-git-logs
mailing list