[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