[Scummvm-git-logs] scummvm master -> 97f4767981506daecff502eb20cf1db3c401cd05
neuromancer
noreply at scummvm.org
Tue Jul 11 20:56:02 UTC 2023
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:
97f4767981 FREESCAPE: allow to clean the view ignoring the viewport
Commit: 97f4767981506daecff502eb20cf1db3c401cd05
https://github.com/scummvm/scummvm/commit/97f4767981506daecff502eb20cf1db3c401cd05
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-07-11T22:57:59+02:00
Commit Message:
FREESCAPE: allow to clean the view ignoring the viewport
Changed paths:
engines/freescape/freescape.cpp
engines/freescape/games/driller/driller.cpp
engines/freescape/gfx.h
engines/freescape/gfx_opengl.cpp
engines/freescape/gfx_opengl.h
engines/freescape/gfx_opengl_shaders.cpp
engines/freescape/gfx_opengl_shaders.h
engines/freescape/gfx_tinygl.cpp
engines/freescape/gfx_tinygl.h
diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index 86b33f9db74..c4032a618eb 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -456,6 +456,7 @@ void FreescapeEngine::processInput() {
case Common::EVENT_SCREEN_CHANGED:
_gfx->computeScreenViewport();
+ _gfx->clear(0, 0, 0, true);
break;
case Common::EVENT_MOUSEMOVE:
@@ -573,7 +574,7 @@ Common::Error FreescapeEngine::run() {
resetInput();
_gfx->computeScreenViewport();
- drawFrame();
+ _gfx->clear(0, 0, 0, true);
_gfx->flipBuffer();
g_system->updateScreen();
diff --git a/engines/freescape/games/driller/driller.cpp b/engines/freescape/games/driller/driller.cpp
index 4dfc8da6336..e61483762c0 100644
--- a/engines/freescape/games/driller/driller.cpp
+++ b/engines/freescape/games/driller/driller.cpp
@@ -98,6 +98,7 @@ void DrillerEngine::titleScreen() {
_gfx->flipBuffer();
g_system->updateScreen();
g_system->delayMillis(3000);
+ _gfx->clear(0, 0, 0, true);
}
}
void DrillerEngine::borderScreen() {
@@ -109,6 +110,7 @@ void DrillerEngine::borderScreen() {
_gfx->flipBuffer();
g_system->updateScreen();
g_system->delayMillis(3000);
+ _gfx->clear(0, 0, 0, true);
}
}
diff --git a/engines/freescape/gfx.h b/engines/freescape/gfx.h
index e269e45f486..287fb0ef38a 100644
--- a/engines/freescape/gfx.h
+++ b/engines/freescape/gfx.h
@@ -91,7 +91,7 @@ public:
virtual void renderFace(const Common::Array<Math::Vector3d> &vertices) = 0;
void setColorRemaps(ColorReMap *colorRemaps);
- virtual void clear(uint8 r, uint8 g, uint8 b) = 0;
+ virtual void clear(uint8 r, uint8 g, uint8 b, bool ignoreViewport = false) = 0;
virtual void drawFloor(uint8 color) = 0;
virtual void drawBackground(uint8 color);
diff --git a/engines/freescape/gfx_opengl.cpp b/engines/freescape/gfx_opengl.cpp
index 54213885a32..ee2d8ac2345 100644
--- a/engines/freescape/gfx_opengl.cpp
+++ b/engines/freescape/gfx_opengl.cpp
@@ -311,11 +311,13 @@ void OpenGLRenderer::useColor(uint8 r, uint8 g, uint8 b) {
glColor3ub(r, g, b);
}
-void OpenGLRenderer::clear(uint8 r, uint8 g, uint8 b) {
- glDisable(GL_SCISSOR_TEST);
+void OpenGLRenderer::clear(uint8 r, uint8 g, uint8 b, bool ignoreViewport) {
+ if (ignoreViewport)
+ glDisable(GL_SCISSOR_TEST);
glClearColor(r / 255., g / 255., b / 255., 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glEnable(GL_SCISSOR_TEST);
+ if (ignoreViewport)
+ glEnable(GL_SCISSOR_TEST);
}
void OpenGLRenderer::drawFloor(uint8 color) {
diff --git a/engines/freescape/gfx_opengl.h b/engines/freescape/gfx_opengl.h
index 1606bece443..40b68f68458 100644
--- a/engines/freescape/gfx_opengl.h
+++ b/engines/freescape/gfx_opengl.h
@@ -82,7 +82,7 @@ public:
GLubyte *_variableStippleArray;
virtual void init() override;
- virtual void clear(uint8 r, uint8 g, uint8 b) override;
+ virtual void clear(uint8 r, uint8 g, uint8 b, bool ignoreViewport = false) override;
virtual void setViewport(const Common::Rect &rect) override;
virtual Common::Point nativeResolution() override;
virtual void positionCamera(const Math::Vector3d &pos, const Math::Vector3d &interest) override;
diff --git a/engines/freescape/gfx_opengl_shaders.cpp b/engines/freescape/gfx_opengl_shaders.cpp
index 7e75cdd9057..b8fcd92e994 100644
--- a/engines/freescape/gfx_opengl_shaders.cpp
+++ b/engines/freescape/gfx_opengl_shaders.cpp
@@ -321,9 +321,13 @@ void OpenGLShaderRenderer::useColor(uint8 r, uint8 g, uint8 b) {
_triangleShader->setUniform("color", color);
}
-void OpenGLShaderRenderer::clear(uint8 r, uint8 g, uint8 b) {
+void OpenGLShaderRenderer::clear(uint8 r, uint8 g, uint8 b, bool ignoreViewport) {
+ if (ignoreViewport)
+ glDisable(GL_SCISSOR_TEST);
glClearColor(r / 255., g / 255., b / 255., 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ if (ignoreViewport)
+ glEnable(GL_SCISSOR_TEST);
}
void OpenGLShaderRenderer::drawFloor(uint8 color) {
diff --git a/engines/freescape/gfx_opengl_shaders.h b/engines/freescape/gfx_opengl_shaders.h
index 2ad2824b74e..65512b7a56c 100644
--- a/engines/freescape/gfx_opengl_shaders.h
+++ b/engines/freescape/gfx_opengl_shaders.h
@@ -65,7 +65,7 @@ public:
int _variableStippleArray[64];
virtual void init() override;
- virtual void clear(uint8 r, uint8 g, uint8 b) override;
+ virtual void clear(uint8 r, uint8 g, uint8 b, bool ignoreViewport = false) override;
virtual void setViewport(const Common::Rect &rect) override;
virtual Common::Point nativeResolution() override;
virtual void positionCamera(const Math::Vector3d &pos, const Math::Vector3d &interest) override;
diff --git a/engines/freescape/gfx_tinygl.cpp b/engines/freescape/gfx_tinygl.cpp
index 6101f8bec33..ba73b80aaee 100644
--- a/engines/freescape/gfx_tinygl.cpp
+++ b/engines/freescape/gfx_tinygl.cpp
@@ -213,7 +213,7 @@ void TinyGLRenderer::useColor(uint8 r, uint8 g, uint8 b) {
tglColor3ub(r, g, b);
}
-void TinyGLRenderer::clear(uint8 r, uint8 g, uint8 b) {
+void TinyGLRenderer::clear(uint8 r, uint8 g, uint8 b, bool ignoreViewport) {
tglClearColor(r / 255., g / 255., b / 255., 1.0);
tglClear(TGL_COLOR_BUFFER_BIT | TGL_DEPTH_BUFFER_BIT);
}
diff --git a/engines/freescape/gfx_tinygl.h b/engines/freescape/gfx_tinygl.h
index ad65a171581..89cb9277312 100644
--- a/engines/freescape/gfx_tinygl.h
+++ b/engines/freescape/gfx_tinygl.h
@@ -47,7 +47,7 @@ public:
Vertex *_verts;
virtual void init() override;
- virtual void clear(uint8 r, uint8 g, uint8 b) override;
+ virtual void clear(uint8 r, uint8 g, uint8 b, bool ignoreViewport = false) override;
virtual void setViewport(const Common::Rect &rect) override;
virtual void positionCamera(const Math::Vector3d &pos, const Math::Vector3d &interest) override;
virtual void updateProjectionMatrix(float fov, float nearClipPlane, float farClipPlane) override;
More information about the Scummvm-git-logs
mailing list