[Scummvm-git-logs] scummvm master -> 94f7e36c006ac96a85fafbad2f8b4f58d034195a

lephilousophe noreply at scummvm.org
Sun Jun 1 11:33:06 UTC 2025


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
e92b6414e1 ENGINES: Replace glColor3* calls with OpenGL ES compatible calls
94f7e36c00 STARK: Make glColorPointer calls compatible with OpenGL ES


Commit: e92b6414e16c048c10a747d66fe1d02e8087fb5a
    https://github.com/scummvm/scummvm/commit/e92b6414e16c048c10a747d66fe1d02e8087fb5a
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2025-06-01T13:33:03+02:00

Commit Message:
ENGINES: Replace glColor3* calls with OpenGL ES compatible calls

Changed paths:
    engines/freescape/gfx_opengl.cpp
    engines/freescape/gfx_opengl_shaders.cpp
    engines/freescape/gfx_tinygl.cpp
    engines/grim/gfx_opengl.cpp
    engines/grim/gfx_tinygl.cpp
    engines/myst3/gfx_opengl.cpp
    engines/myst3/gfx_tinygl.cpp
    engines/playground3d/gfx_opengl.cpp
    engines/playground3d/gfx_tinygl.cpp
    engines/stark/gfx/openglactor.cpp
    engines/stark/gfx/openglprop.cpp
    engines/stark/gfx/openglsurface.cpp
    engines/tinsel/noir/spriter.cpp
    engines/watchmaker/3d/render/opengl_2d.cpp
    engines/watchmaker/3d/render/opengl_renderer.cpp


diff --git a/engines/freescape/gfx_opengl.cpp b/engines/freescape/gfx_opengl.cpp
index 196fdf27357..924f3742885 100644
--- a/engines/freescape/gfx_opengl.cpp
+++ b/engines/freescape/gfx_opengl.cpp
@@ -228,7 +228,7 @@ void OpenGLRenderer::positionCamera(const Math::Vector3d &pos, const Math::Vecto
 void OpenGLRenderer::renderSensorShoot(byte color, const Math::Vector3d sensor, const Math::Vector3d target, const Common::Rect &viewArea) {
 	glEnable(GL_BLEND);
 	glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);
-	glColor3ub(255, 255, 255);
+	glColor4ub(255, 255, 255, 255);
 
 	glLineWidth(20);
 	glEnableClientState(GL_VERTEX_ARRAY);
@@ -301,7 +301,7 @@ void OpenGLRenderer::renderPlayerShootRay(byte color, const Common::Point &posit
 	glDisable(GL_DEPTH_TEST);
 	glDepthMask(GL_FALSE);
 
-	glColor3ub(r, g, b);
+	glColor4ub(r, g, b, 255);
 
 	glLineWidth(5); // It will not work in every OpenGL implementation since the
 	                // spec doesn't require support for line widths other than 1
@@ -417,7 +417,7 @@ void OpenGLRenderer::renderPlayerShootBall(byte color, const Common::Point &posi
 	glDisable(GL_DEPTH_TEST);
 	glDepthMask(GL_FALSE);
 
-	glColor3ub(r, g, b);
+	glColor4ub(r, g, b, 255);
 	int triangleAmount = 20;
 	float twicePi = (float)(2.0 * M_PI);
 	float coef = (9 - frame) / 9.0;
@@ -531,7 +531,7 @@ void OpenGLRenderer::useStipple(bool enabled) {
 }
 
 void OpenGLRenderer::useColor(uint8 r, uint8 g, uint8 b) {
-	glColor3ub(r, g, b);
+	glColor4ub(r, g, b, 255);
 }
 
 void OpenGLRenderer::clear(uint8 r, uint8 g, uint8 b, bool ignoreViewport) {
@@ -547,7 +547,7 @@ void OpenGLRenderer::drawFloor(uint8 color) {
 	uint8 r1, g1, b1, r2, g2, b2;
 	byte *stipple;
 	assert(getRGBAt(color, 0, r1, g1, b1, r2, g2, b2, stipple)); // TODO: move check inside this function
-	glColor3ub(r1, g1, b1);
+	glColor4ub(r1, g1, b1, 255);
 
 	glEnableClientState(GL_VERTEX_ARRAY);
 	copyToVertexArray(0, Math::Vector3d(-100000.0, 0.0, -100000.0));
diff --git a/engines/freescape/gfx_opengl_shaders.cpp b/engines/freescape/gfx_opengl_shaders.cpp
index a7530e2b989..26b8586921b 100644
--- a/engines/freescape/gfx_opengl_shaders.cpp
+++ b/engines/freescape/gfx_opengl_shaders.cpp
@@ -558,7 +558,7 @@ void OpenGLShaderRenderer::drawFloor(uint8 color) {
 	/*uint8 r1, g1, b1, r2, g2, b2;
 	byte *stipple;
 	assert(getRGBAt(color, r1, g1, b1, r2, g2, b2, stipple)); // TODO: move check inside this function
-	glColor3ub(r1, g1, b1);
+	glColor4ub(r1, g1, b1, 255);
 
 	glEnableClientState(GL_VERTEX_ARRAY);
 	copyToVertexArray(0, Math::Vector3d(-100000.0, 0.0, -100000.0));
diff --git a/engines/freescape/gfx_tinygl.cpp b/engines/freescape/gfx_tinygl.cpp
index 482cc09420a..972c3798f38 100644
--- a/engines/freescape/gfx_tinygl.cpp
+++ b/engines/freescape/gfx_tinygl.cpp
@@ -175,7 +175,7 @@ void TinyGLRenderer::positionCamera(const Math::Vector3d &pos, const Math::Vecto
 void TinyGLRenderer::renderSensorShoot(byte color, const Math::Vector3d sensor, const Math::Vector3d player, const Common::Rect &viewArea) {
 	tglEnable(TGL_BLEND);
 	tglBlendFunc(TGL_ONE_MINUS_DST_COLOR, TGL_ZERO);
-	tglColor3ub(255, 255, 255);
+	tglColor4ub(255, 255, 255, 255);
 	polygonOffset(true);
 	tglEnableClientState(TGL_VERTEX_ARRAY);
 	copyToVertexArray(0, player);
@@ -206,7 +206,7 @@ void TinyGLRenderer::renderPlayerShootBall(byte color, const Common::Point &posi
 	tglDisable(TGL_DEPTH_TEST);
 	tglDepthMask(TGL_FALSE);
 
-	tglColor3ub(r, g, b);
+	tglColor4ub(r, g, b, 255);
 	int triangleAmount = 20;
 	float twicePi = (float)(2.0 * M_PI);
 	float coef = (9 - frame) / 9.0;
@@ -255,7 +255,7 @@ void TinyGLRenderer::renderPlayerShootRay(byte color, const Common::Point &posit
 	tglDisable(TGL_DEPTH_TEST);
 	tglDepthMask(TGL_FALSE);
 
-	tglColor3ub(r, g, b);
+	tglColor4ub(r, g, b, 255);
 
 	int viewPort[4];
 	tglGetIntegerv(TGL_VIEWPORT, viewPort);
@@ -535,7 +535,7 @@ void TinyGLRenderer::polygonOffset(bool enabled) {
 void TinyGLRenderer::useColor(uint8 r, uint8 g, uint8 b) {
 	_lastColorSet1 = _lastColorSet0;
 	_lastColorSet0 = _texturePixelFormat.RGBToColor(r, g, b);
-	tglColor3ub(r, g, b);
+	tglColor4ub(r, g, b, 255);
 }
 
 void TinyGLRenderer::clear(uint8 r, uint8 g, uint8 b, bool ignoreViewport) {
@@ -551,7 +551,7 @@ void TinyGLRenderer::drawFloor(uint8 color) {
 	uint8 r1, g1, b1, r2, g2, b2;
 	byte *stipple = nullptr;
 	assert(getRGBAt(color, 0, r1, g1, b1, r2, g2, b2, stipple)); // TODO: move check inside this function
-	tglColor3ub(r1, g1, b1);
+	tglColor4ub(r1, g1, b1, 255);
 
 	tglEnableClientState(TGL_VERTEX_ARRAY);
 	copyToVertexArray(0, Math::Vector3d(-100000.0, 0.0, -100000.0));
diff --git a/engines/grim/gfx_opengl.cpp b/engines/grim/gfx_opengl.cpp
index c7396f9e668..6a2d6c3347e 100644
--- a/engines/grim/gfx_opengl.cpp
+++ b/engines/grim/gfx_opengl.cpp
@@ -555,11 +555,11 @@ void GfxOpenGL::startActorDraw(const Actor *actor) {
 		glDisable(GL_LIGHTING);
 		glDisable(GL_TEXTURE_2D);
 		if (g_grim->getGameType() == GType_GRIM) {
-			glColor3ub(_shadowColorR, _shadowColorG, _shadowColorB);
+			glColor4ub(_shadowColorR, _shadowColorG, _shadowColorB, 255);
 		} else {
-			glColor3ub(_currentShadowArray->color.getRed(), _currentShadowArray->color.getGreen(), _currentShadowArray->color.getBlue());
+			glColor4ub(_currentShadowArray->color.getRed(), _currentShadowArray->color.getGreen(), _currentShadowArray->color.getBlue(), 255);
 		}
-		//glColor3f(0.0f, 1.0f, 0.0f); // debug draw color
+		//glColor4f(0.0f, 1.0f, 0.0f, 1.0f); // debug draw color
 		shadowProjection(_currentShadowArray->pos, shadowSector->getVertices()[0], shadowSector->getNormal(), _currentShadowArray->dontNegate);
 	}
 
@@ -621,7 +621,7 @@ void GfxOpenGL::finishActorDraw() {
 
 	if (_currentShadowArray) {
 		glEnable(GL_LIGHTING);
-		glColor3f(1.0f, 1.0f, 1.0f);
+		glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 		glDisable(GL_POLYGON_OFFSET_FILL);
 	}
 
@@ -633,7 +633,7 @@ void GfxOpenGL::finishActorDraw() {
 }
 
 void GfxOpenGL::drawShadowPlanes() {
-/*	glColor3f(1.0f, 1.0f, 1.0f);
+/*	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 	_currentShadowArray->planeList.begin();
 	for (SectorListType::iterator i = _currentShadowArray->planeList.begin(); i != _currentShadowArray->planeList.end(); i++) {
 		Sector *shadowSector = i->sector;
@@ -755,7 +755,7 @@ void GfxOpenGL::drawEMIModelFace(const EMIModel *model, const EMIMeshFace *face)
 	glEnd();
 
 	if (!_currentShadowArray) {
-		glColor3f(1.0f, 1.0f, 1.0f);
+		glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 	}
 
 	glEnable(GL_TEXTURE_2D);
@@ -1176,7 +1176,7 @@ void GfxOpenGL::drawBitmap(const Bitmap *bitmap, int dx, int dy, uint32 layer) {
 		glDisable(GL_DEPTH_TEST);
 		glDepthMask(GL_FALSE);
 
-		glColor3f(1.0f, 1.0f, 1.0f);
+		glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 		BitmapData *data = bitmap->_data;
 		GLuint *textures = (GLuint *)bitmap->getTexIds();
@@ -1196,7 +1196,7 @@ void GfxOpenGL::drawBitmap(const Bitmap *bitmap, int dx, int dy, uint32 layer) {
 			glEnd();
 		}
 
-		glColor3f(1.0f, 1.0f, 1.0f);
+		glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 		glDisable(GL_BLEND);
 		glDisable(GL_TEXTURE_2D);
@@ -1473,7 +1473,7 @@ void GfxOpenGL::drawTextObject(const TextObject *text) {
 	const Color &color = text->getFGColor();
 	const Font *f = text->getFont();
 
-	glColor3ub(color.getRed(), color.getGreen(), color.getBlue());
+	glColor4ub(color.getRed(), color.getGreen(), color.getBlue(), 255);
 	if (!f->is8Bit()) {
 		const TextObjectUserData *ud = (const TextObjectUserData *)text->getUserData();
 
@@ -1512,7 +1512,7 @@ void GfxOpenGL::drawTextObject(const TextObject *text) {
 			glEnd();
 		}
 
-		glColor3f(1, 1, 1);
+		glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 		glDisable(GL_TEXTURE_2D);
 		glDisable(GL_BLEND);
@@ -1561,7 +1561,7 @@ void GfxOpenGL::drawTextObject(const TextObject *text) {
 		}
 	}
 
-	glColor3f(1, 1, 1);
+	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 	glDisable(GL_TEXTURE_2D);
 	glDisable(GL_BLEND);
@@ -1856,7 +1856,7 @@ void GfxOpenGL::drawEmergString(int x, int y, const char *text, const Color &fgC
 	glDisable(GL_LIGHTING);
 
 	glRasterPos2i(x, y);
-	glColor3f(1.0f, 1.0f, 1.0f);
+	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 	glListBase(_emergFont);
 
@@ -2035,7 +2035,7 @@ void GfxOpenGL::irisAroundRegion(int x1, int y1, int x2, int y2) {
 	glDisable(GL_LIGHTING);
 	glDepthMask(GL_FALSE);
 
-	glColor3f(0.0f, 0.0f, 0.0f);
+	glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
 
 	// Explicitly cast to avoid problems with C++11
 	float fx1 = x1;
@@ -2063,7 +2063,7 @@ void GfxOpenGL::irisAroundRegion(int x1, int y1, int x2, int y2) {
 	}
 	glEnd();
 
-	glColor3f(1.0f, 1.0f, 1.0f);
+	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 	glEnable(GL_DEPTH_TEST);
 	glEnable(GL_LIGHTING);
 	glDepthMask(GL_TRUE);
@@ -2086,7 +2086,7 @@ void GfxOpenGL::drawRectangle(const PrimitiveObject *primitive) {
 	glDisable(GL_DEPTH_TEST);
 	glDepthMask(GL_FALSE);
 
-	glColor3ub(color.getRed(), color.getGreen(), color.getBlue());
+	glColor4ub(color.getRed(), color.getGreen(), color.getBlue(), 255);
 
 	if (primitive->isFilled()) {
 		glBegin(GL_QUADS);
@@ -2105,7 +2105,7 @@ void GfxOpenGL::drawRectangle(const PrimitiveObject *primitive) {
 		glEnd();
 	}
 
-	glColor3f(1.0f, 1.0f, 1.0f);
+	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 	glDepthMask(GL_TRUE);
 	glEnable(GL_DEPTH_TEST);
@@ -2130,7 +2130,7 @@ void GfxOpenGL::drawLine(const PrimitiveObject *primitive) {
 	glDisable(GL_DEPTH_TEST);
 	glDepthMask(GL_FALSE);
 
-	glColor3ub(color.getRed(), color.getGreen(), color.getBlue());
+	glColor4ub(color.getRed(), color.getGreen(), color.getBlue(), 255);
 
 	glLineWidth(_scaleW);
 
@@ -2139,7 +2139,7 @@ void GfxOpenGL::drawLine(const PrimitiveObject *primitive) {
 	glVertex2f(x2, y2);
 	glEnd();
 
-	glColor3f(1.0f, 1.0f, 1.0f);
+	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 	glDepthMask(GL_TRUE);
 	glEnable(GL_DEPTH_TEST);
@@ -2205,7 +2205,7 @@ void GfxOpenGL::drawPolygon(const PrimitiveObject *primitive) {
 	glDisable(GL_DEPTH_TEST);
 	glDepthMask(GL_FALSE);
 
-	glColor3ub(color.getRed(), color.getGreen(), color.getBlue());
+	glColor4ub(color.getRed(), color.getGreen(), color.getBlue(), 255);
 
 	glBegin(GL_LINES);
 	glVertex2f(x1, y1);
@@ -2214,7 +2214,7 @@ void GfxOpenGL::drawPolygon(const PrimitiveObject *primitive) {
 	glVertex2f(x4 + 1, y4);
 	glEnd();
 
-	glColor3f(1.0f, 1.0f, 1.0f);
+	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 	glDepthMask(GL_TRUE);
 	glEnable(GL_DEPTH_TEST);
diff --git a/engines/grim/gfx_tinygl.cpp b/engines/grim/gfx_tinygl.cpp
index 23ad4e0fb21..cd97bf741ca 100644
--- a/engines/grim/gfx_tinygl.cpp
+++ b/engines/grim/gfx_tinygl.cpp
@@ -478,11 +478,11 @@ void GfxTinyGL::startActorDraw(const Actor *actor) {
 		tglDisable(TGL_LIGHTING);
 		tglDisable(TGL_TEXTURE_2D);
 		if (g_grim->getGameType() == GType_GRIM) {
-			tglColor3ub(_shadowColorR, _shadowColorG, _shadowColorB);
+			tglColor4ub(_shadowColorR, _shadowColorG, _shadowColorB, 255);
 		} else {
-			tglColor3ub(_currentShadowArray->color.getRed(), _currentShadowArray->color.getGreen(), _currentShadowArray->color.getBlue());
+			tglColor4ub(_currentShadowArray->color.getRed(), _currentShadowArray->color.getGreen(), _currentShadowArray->color.getBlue(), 255);
 		}
-		//tglColor3f(0.0f, 1.0f, 0.0f); // debug draw color
+		//tglColor4f(0.0f, 1.0f, 0.0f, 1.0f); // debug draw color
 		shadowProjection(_currentShadowArray->pos, shadowSector->getVertices()[0], shadowSector->getNormal(), _currentShadowArray->dontNegate);
 	}
 
@@ -544,7 +544,7 @@ void GfxTinyGL::finishActorDraw() {
 
 	if (_currentShadowArray) {
 		tglEnable(TGL_LIGHTING);
-		tglColor3f(1.0f, 1.0f, 1.0f);
+		tglColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 		tglDisable(TGL_POLYGON_OFFSET_FILL);
 	}
 
@@ -556,7 +556,7 @@ void GfxTinyGL::finishActorDraw() {
 }
 
 void GfxTinyGL::drawShadowPlanes() {
-/*	tglColor3f(1.0f, 1.0f, 1.0f);
+/*	tglColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 	_currentShadowArray->planeList.begin();
 	for (SectorListType::iterator i = _currentShadowArray->planeList.begin(); i != _currentShadowArray->planeList.end(); i++) {
 		Sector *shadowSector = i->sector;
@@ -678,7 +678,7 @@ void GfxTinyGL::drawEMIModelFace(const EMIModel *model, const EMIMeshFace *face)
 	tglEnd();
 
 	if (!_currentShadowArray) {
-		tglColor3f(1.0f, 1.0f, 1.0f);
+		tglColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 	}
 
 	tglEnable(TGL_TEXTURE_2D);
@@ -939,7 +939,7 @@ void GfxTinyGL::drawBitmap(const Bitmap *bitmap, int x, int y, uint32 layer) {
 	if (g_grim->getGameType() == GType_MONKEY4 && bitmap->_data && bitmap->_data->_texc) {
 		tglEnable(TGL_BLEND);
 		tglBlendFunc(TGL_SRC_ALPHA, TGL_ONE_MINUS_SRC_ALPHA);
-		tglColor3f(1.0f, 1.0f, 1.0f);
+		tglColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 		BitmapData *data = bitmap->_data;
 		float *texc = data->_texc;
@@ -1257,7 +1257,7 @@ void GfxTinyGL::dimRegion(int x, int y, int w, int h, float level) {
 	tglVertex2f(x, y + h);
 	tglEnd();
 
-	tglColor3f(1.0f, 1.0f, 1.0f);
+	tglColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 	tglDisable(TGL_BLEND);
 	tglDepthMask(TGL_TRUE);
@@ -1278,7 +1278,7 @@ void GfxTinyGL::irisAroundRegion(int x1, int y1, int x2, int y2) {
 	tglDisable(TGL_LIGHTING);
 	tglDepthMask(TGL_FALSE);
 
-	tglColor3f(0.0f, 0.0f, 0.0f);
+	tglColor4f(0.0f, 0.0f, 0.0f, 1.0f);
 
 	// Explicitly cast to avoid problems with C++11
 	float fx1 = x1;
@@ -1305,7 +1305,7 @@ void GfxTinyGL::irisAroundRegion(int x1, int y1, int x2, int y2) {
 	tglDrawArrays(TGL_TRIANGLE_STRIP, 0, 10);
 	tglDisableClientState(TGL_VERTEX_ARRAY);
 
-	tglColor3f(1.0f, 1.0f, 1.0f);
+	tglColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 	tglEnable(TGL_DEPTH_TEST);
 	tglEnable(TGL_LIGHTING);
 	tglDepthMask(TGL_TRUE);
@@ -1328,7 +1328,7 @@ void GfxTinyGL::drawRectangle(const PrimitiveObject *primitive) {
 	tglDisable(TGL_DEPTH_TEST);
 	tglDepthMask(TGL_FALSE);
 
-	tglColor3ub(color.getRed(), color.getGreen(), color.getBlue());
+	tglColor4ub(color.getRed(), color.getGreen(), color.getBlue(), 255);
 
 	if (primitive->isFilled()) {
 		tglBegin(TGL_QUADS);
@@ -1347,7 +1347,7 @@ void GfxTinyGL::drawRectangle(const PrimitiveObject *primitive) {
 		tglEnd();
 	}
 
-	tglColor3f(1.0f, 1.0f, 1.0f);
+	tglColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 	tglDepthMask(TGL_TRUE);
 	tglEnable(TGL_DEPTH_TEST);
@@ -1372,7 +1372,7 @@ void GfxTinyGL::drawLine(const PrimitiveObject *primitive) {
 	tglDisable(TGL_DEPTH_TEST);
 	tglDepthMask(TGL_FALSE);
 
-	tglColor3ub(color.getRed(), color.getGreen(), color.getBlue());
+	tglColor4ub(color.getRed(), color.getGreen(), color.getBlue(), 255);
 
 	//tglLineWidth(_scaleW); // Not implemented in TinyGL
 
@@ -1381,7 +1381,7 @@ void GfxTinyGL::drawLine(const PrimitiveObject *primitive) {
 	tglVertex2f(x2, y2);
 	tglEnd();
 
-	tglColor3f(1.0f, 1.0f, 1.0f);
+	tglColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 	tglDepthMask(TGL_TRUE);
 	tglEnable(TGL_DEPTH_TEST);
@@ -1443,7 +1443,7 @@ void GfxTinyGL::drawPolygon(const PrimitiveObject *primitive) {
 	tglDisable(TGL_DEPTH_TEST);
 	tglDepthMask(TGL_FALSE);
 
-	tglColor3ub(color.getRed(), color.getGreen(), color.getBlue());
+	tglColor4ub(color.getRed(), color.getGreen(), color.getBlue(), 255);
 
 	tglBegin(TGL_LINES);
 	tglVertex2f(x1, y1);
@@ -1452,7 +1452,7 @@ void GfxTinyGL::drawPolygon(const PrimitiveObject *primitive) {
 	tglVertex2f(x4 + 1, y4);
 	tglEnd();
 
-	tglColor3f(1.0f, 1.0f, 1.0f);
+	tglColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 	tglDepthMask(TGL_TRUE);
 	tglEnable(TGL_DEPTH_TEST);
diff --git a/engines/myst3/gfx_opengl.cpp b/engines/myst3/gfx_opengl.cpp
index 208bd2e1025..87be6db3ee9 100644
--- a/engines/myst3/gfx_opengl.cpp
+++ b/engines/myst3/gfx_opengl.cpp
@@ -72,7 +72,7 @@ void OpenGLRenderer::init() {
 void OpenGLRenderer::clear() {
 	glClearColor(0.f, 0.f, 0.f, 1.f); // Solid black
 	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-	glColor3f(1.0f, 1.0f, 1.0f);
+	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 }
 
 void OpenGLRenderer::selectTargetWindow(Window *window, bool is3D, bool scaled) {
@@ -208,7 +208,7 @@ void OpenGLRenderer::draw2DText(const Common::String &text, const Common::Point
 	glEnable(GL_TEXTURE_2D);
 	glDepthMask(GL_FALSE);
 
-	glColor3f(1.0f, 1.0f, 1.0f);
+	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 	glBindTexture(GL_TEXTURE_2D, glFont->id);
 
 	int x = position.x;
diff --git a/engines/myst3/gfx_tinygl.cpp b/engines/myst3/gfx_tinygl.cpp
index b4f6ff78574..6310e7d0938 100644
--- a/engines/myst3/gfx_tinygl.cpp
+++ b/engines/myst3/gfx_tinygl.cpp
@@ -76,7 +76,7 @@ void TinyGLRenderer::init() {
 void TinyGLRenderer::clear() {
 	tglClearColor(0.f, 0.f, 0.f, 1.f); // Solid black
 	tglClear(TGL_COLOR_BUFFER_BIT | TGL_DEPTH_BUFFER_BIT);
-	tglColor3f(1.0f, 1.0f, 1.0f);
+	tglColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 }
 
 void TinyGLRenderer::selectTargetWindow(Window *window, bool is3D, bool scaled) {
@@ -191,7 +191,7 @@ void TinyGLRenderer::draw2DText(const Common::String &text, const Common::Point
 	tglEnable(TGL_TEXTURE_2D);
 	tglDepthMask(TGL_FALSE);
 
-	tglColor3f(1.0f, 1.0f, 1.0f);
+	tglColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 	int x = position.x;
 	int y = position.y;
diff --git a/engines/playground3d/gfx_opengl.cpp b/engines/playground3d/gfx_opengl.cpp
index 177e4183828..b84e2f61da7 100644
--- a/engines/playground3d/gfx_opengl.cpp
+++ b/engines/playground3d/gfx_opengl.cpp
@@ -166,7 +166,7 @@ void OpenGLRenderer::disableScissor() {
 void OpenGLRenderer::drawFace(uint face) {
 	glBegin(GL_TRIANGLE_STRIP);
 	for (uint i = 0; i < 4; i++) {
-		glColor3f(cubeVertices[11 * (4 * face + i) + 8], cubeVertices[11 * (4 * face + i) + 9], cubeVertices[11 * (4 * face + i) + 10]);
+		glColor4f(cubeVertices[11 * (4 * face + i) + 8], cubeVertices[11 * (4 * face + i) + 9], cubeVertices[11 * (4 * face + i) + 10], 1.0f);
 		glVertex3f(cubeVertices[11 * (4 * face + i) + 2], cubeVertices[11 * (4 * face + i) + 3], cubeVertices[11 * (4 * face + i) + 4]);
 		glNormal3f(cubeVertices[11 * (4 * face + i) + 5], cubeVertices[11 * (4 * face + i) + 6], cubeVertices[11 * (4 * face + i) + 7]);
 	}
@@ -212,7 +212,7 @@ void OpenGLRenderer::drawPolyOffsetTest(const Math::Vector3d &pos, const Math::V
 	glTranslatef(pos.x(), pos.y(), pos.z());
 	glRotatef(roll.y(), 0.0f, 1.0f, 0.0f);
 
-	glColor3f(0.0f, 1.0f, 0.0f);
+	glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
 	glBegin(GL_TRIANGLES);
 	glVertex3f(-1.0f,  1.0, 0.0f);
 	glVertex3f( 1.0f,  1.0, 0.0f);
@@ -221,7 +221,7 @@ void OpenGLRenderer::drawPolyOffsetTest(const Math::Vector3d &pos, const Math::V
 
 	glPolygonOffset(-1.0f, 0.0f);
 	glEnable(GL_POLYGON_OFFSET_FILL);
-	glColor3f(1.0f, 1.0f, 1.0f);
+	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 	glBegin(GL_TRIANGLES);
 	glVertex3f(-0.5f,  0.5, 0.0f);
 	glVertex3f( 0.5f,  0.5, 0.0f);
diff --git a/engines/playground3d/gfx_tinygl.cpp b/engines/playground3d/gfx_tinygl.cpp
index 3770500e1e2..1e5f7f997d9 100644
--- a/engines/playground3d/gfx_tinygl.cpp
+++ b/engines/playground3d/gfx_tinygl.cpp
@@ -202,7 +202,7 @@ void TinyGLRenderer::disableScissor() {
 void TinyGLRenderer::drawFace(uint face) {
 	tglBegin(TGL_TRIANGLE_STRIP);
 	for (uint i = 0; i < 4; i++) {
-		tglColor3f(cubeVertices[11 * (4 * face + i) + 8], cubeVertices[11 * (4 * face + i) + 9], cubeVertices[11 * (4 * face + i) + 10]);
+		tglColor4f(cubeVertices[11 * (4 * face + i) + 8], cubeVertices[11 * (4 * face + i) + 9], cubeVertices[11 * (4 * face + i) + 10], 1.0f);
 		tglVertex3f(cubeVertices[11 * (4 * face + i) + 2], cubeVertices[11 * (4 * face + i) + 3], cubeVertices[11 * (4 * face + i) + 4]);
 		tglNormal3f(cubeVertices[11 * (4 * face + i) + 5], cubeVertices[11 * (4 * face + i) + 6], cubeVertices[11 * (4 * face + i) + 7]);
 	}
@@ -248,7 +248,7 @@ void TinyGLRenderer::drawPolyOffsetTest(const Math::Vector3d &pos, const Math::V
 	tglTranslatef(pos.x(), pos.y(), pos.z());
 	tglRotatef(roll.y(), 0.0f, 1.0f, 0.0f);
 
-	tglColor3f(0.0f, 1.0f, 0.0f);
+	tglColor4f(0.0f, 1.0f, 0.0f, 1.0f);
 	tglBegin(TGL_TRIANGLES);
 	tglVertex3f(-1.0f,  1.0, 0.0f);
 	tglVertex3f( 1.0f,  1.0, 0.0f);
@@ -257,7 +257,7 @@ void TinyGLRenderer::drawPolyOffsetTest(const Math::Vector3d &pos, const Math::V
 
 	tglPolygonOffset(-1.0f, 0.0f);
 	tglEnable(TGL_POLYGON_OFFSET_FILL);
-	tglColor3f(1.0f, 1.0f, 1.0f);
+	tglColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 	tglBegin(TGL_TRIANGLES);
 	tglVertex3f(-0.5f,  0.5, 0.0f);
 	tglVertex3f( 0.5f,  0.5, 0.0f);
diff --git a/engines/stark/gfx/openglactor.cpp b/engines/stark/gfx/openglactor.cpp
index aa515bb2ea6..9c1fe091b51 100644
--- a/engines/stark/gfx/openglactor.cpp
+++ b/engines/stark/gfx/openglactor.cpp
@@ -127,12 +127,12 @@ void OpenGLActorRenderer::render(const Math::Vector3d &position, float direction
 				if (_gfx->computeLightsEnabled())
 					color = Math::Vector3d(1.0f, 1.0f, 1.0f);
 				else
-					glColor3f(1.0f, 1.0f, 1.0f);
+					glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 			} else {
 				if (_gfx->computeLightsEnabled())
 					color = Math::Vector3d(material->r, material->g, material->b);
 				else
-					glColor3f(material->r, material->g, material->b);
+					glColor4f(material->r, material->g, material->b, 1.0f);
 			}
 			uint32 index = vertexIndices[i];
 			auto vertex = _faceVBO[index];
diff --git a/engines/stark/gfx/openglprop.cpp b/engines/stark/gfx/openglprop.cpp
index deb319887b5..1c49f2f9683 100644
--- a/engines/stark/gfx/openglprop.cpp
+++ b/engines/stark/gfx/openglprop.cpp
@@ -107,7 +107,7 @@ void OpenGLPropRenderer::render(const Math::Vector3d &position, float direction,
 				if (_gfx->computeLightsEnabled())
 					color = Math::Vector3d(1.0f, 1.0f, 1.0f);
 				else
-					glColor3f(1.0f, 1.0f, 1.0f);
+					glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 				if (material.doubleSided) {
 					vertex.texS = vertex.stexS;
 					vertex.texT = 1.0f - vertex.stexT;
@@ -119,7 +119,7 @@ void OpenGLPropRenderer::render(const Math::Vector3d &position, float direction,
 				if (_gfx->computeLightsEnabled())
 					color = Math::Vector3d(material.r, material.g, material.b);
 				else
-					glColor3f(material.r, material.g, material.b);
+					glColor4f(material.r, material.g, material.b, 1.0f);
 			}
 
 			if (_gfx->computeLightsEnabled()) {
diff --git a/engines/stark/gfx/openglsurface.cpp b/engines/stark/gfx/openglsurface.cpp
index 46b83400b96..37e1893cdd1 100644
--- a/engines/stark/gfx/openglsurface.cpp
+++ b/engines/stark/gfx/openglsurface.cpp
@@ -72,7 +72,7 @@ void OpenGLSurfaceRenderer::render(const Bitmap *bitmap, const Common::Point &de
 
 	glVertexPointer(2, GL_FLOAT, sizeof(SurfaceVertex), &vertices[0].x);
 	glTexCoordPointer(2, GL_FLOAT, 2 * sizeof(float), textCords);
-	glColor3f(1.0f - _fadeLevel, 1.0f - _fadeLevel, 1.0f - _fadeLevel);
+	glColor4f(1.0f - _fadeLevel, 1.0f - _fadeLevel, 1.0f - _fadeLevel, 1.0f);
 
 	bitmap->bind();
 	glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
diff --git a/engines/tinsel/noir/spriter.cpp b/engines/tinsel/noir/spriter.cpp
index a416169db19..2f5a08ee69c 100644
--- a/engines/tinsel/noir/spriter.cpp
+++ b/engines/tinsel/noir/spriter.cpp
@@ -995,7 +995,7 @@ void Spriter::RenderMeshPartColor(MeshPart& part, Vectors& vertices, Vectors &no
 		TGLubyte g = (prim.color >> 8) & 0xff;
 		TGLubyte b = (prim.color >> 16) & 0xff;
 
-		tglColor3ub(r, g, b);
+		tglColor4ub(r, g, b, 255);
 
 		if (part.numVertices == 4) {
 			tglBegin(TGL_QUADS);
@@ -1024,7 +1024,7 @@ void Spriter::RenderMeshPartTexture(MeshPart& part, Vectors& vertices, Vectors &
 	}
 
 	tglEnable(TGL_TEXTURE_2D);
-	tglColor3f(1.0f, 1.0f, 1.0f);
+	tglColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 	for (auto& prim : part.primitives) {
 		tglBindTexture(TGL_TEXTURE_2D, _texture[prim.texture]);
diff --git a/engines/watchmaker/3d/render/opengl_2d.cpp b/engines/watchmaker/3d/render/opengl_2d.cpp
index 4f607499df4..8024294544c 100644
--- a/engines/watchmaker/3d/render/opengl_2d.cpp
+++ b/engines/watchmaker/3d/render/opengl_2d.cpp
@@ -167,7 +167,7 @@ void renderTexture(WGame &game, gTexture &bitmap, Common::Rect srcRect, Common::
 	float rightDst = ((dstRect.right == 0 ? 0 : ((double)dstRect.right) / viewport.width()) * 2.0) - 1.0;
 
 	glBegin(GL_QUADS);
-	glColor3f(1.0, 1.0, 1.0);
+	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 
 	glTexCoord2f(leftSrc, bottomSrc); // Bottom Left
 	glVertex3f(leftDst, bottomDst, 0.0f);
diff --git a/engines/watchmaker/3d/render/opengl_renderer.cpp b/engines/watchmaker/3d/render/opengl_renderer.cpp
index cc523a716e0..b20a617fa23 100644
--- a/engines/watchmaker/3d/render/opengl_renderer.cpp
+++ b/engines/watchmaker/3d/render/opengl_renderer.cpp
@@ -66,8 +66,8 @@ void OpenGLRenderer::drawIndexedPrimitivesVBO(PrimitiveType primitiveType, Commo
 		assert(index <= VBO->_buffer.size());
 		auto &vertex = VBO->_buffer[index];
 		//warning("%d/%d %d: [%f, %f, %f], [%f, %f], [%f, %f]", i, numFaces, index, vertex.x, vertex.y, vertex.z, vertex.u1, vertex.v1, vertex.u2, vertex.v2);
-		//glColor3f((float)i/numFaces, 1.0, 0.0);
-		glColor3f(1.0f, 1.0f, 1.0f);
+		//glColor4f((float)i/numFaces, 1.0f, 0.0f, 1.0f);
+		glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 		glTexCoord2f(vertex.u1, vertex.v1);
 		glVertex3f(vertex.x, vertex.y, -vertex.z);
 	}
@@ -85,7 +85,7 @@ void OpenGLRenderer::drawPrimitives(PrimitiveType primitiveType, Vertex *vertice
 	glBegin(GL_TRIANGLES);
 	for (int i = 0; i < numPrimitives; i++) {
 		auto &vertex = vertices[i];
-		glColor3f(1.0, 1.0, 1.0);
+		glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 		glVertex3f(vertex.sx, vertex.sy, -vertex.sz);
 	}
 	glEnd();


Commit: 94f7e36c006ac96a85fafbad2f8b4f58d034195a
    https://github.com/scummvm/scummvm/commit/94f7e36c006ac96a85fafbad2f8b4f58d034195a
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2025-06-01T13:33:03+02:00

Commit Message:
STARK: Make glColorPointer calls compatible with OpenGL ES

Changed paths:
    engines/stark/gfx/openglactor.cpp
    engines/stark/gfx/openglactor.h
    engines/stark/gfx/openglprop.cpp
    engines/stark/gfx/openglprop.h


diff --git a/engines/stark/gfx/openglactor.cpp b/engines/stark/gfx/openglactor.cpp
index 9c1fe091b51..bc1bbd82e85 100644
--- a/engines/stark/gfx/openglactor.cpp
+++ b/engines/stark/gfx/openglactor.cpp
@@ -252,6 +252,7 @@ void OpenGLActorRenderer::render(const Math::Vector3d &position, float direction
 				vertex.r = color.x();
 				vertex.g = color.y();
 				vertex.b = color.z();
+				vertex.a = 1.0f; /* needed for compatibility with OpenGL ES 1.x */
 			}
 
 			_faceVBO[index] = vertex;
@@ -269,7 +270,7 @@ void OpenGLActorRenderer::render(const Math::Vector3d &position, float direction
 			glTexCoordPointer(2, GL_FLOAT, sizeof(ActorVertex), &_faceVBO[0].texS);
 		glNormalPointer(GL_FLOAT, sizeof(ActorVertex), &_faceVBO[0].nx);
 		if (_gfx->computeLightsEnabled())
-			glColorPointer(3, GL_FLOAT, sizeof(ActorVertex), &_faceVBO[0].r);
+			glColorPointer(4, GL_FLOAT, sizeof(ActorVertex), &_faceVBO[0].r);
 
 		glDrawElements(GL_TRIANGLES, numVertexIndices, GL_UNSIGNED_INT, vertexIndices);
 
diff --git a/engines/stark/gfx/openglactor.h b/engines/stark/gfx/openglactor.h
index 63076574b10..ca38130088a 100644
--- a/engines/stark/gfx/openglactor.h
+++ b/engines/stark/gfx/openglactor.h
@@ -65,6 +65,7 @@ struct _ActorVertex {
 	float r;
 	float g;
 	float b;
+	float a;
 };
 typedef _ActorVertex ActorVertex;
 
diff --git a/engines/stark/gfx/openglprop.cpp b/engines/stark/gfx/openglprop.cpp
index 1c49f2f9683..863e2d7317a 100644
--- a/engines/stark/gfx/openglprop.cpp
+++ b/engines/stark/gfx/openglprop.cpp
@@ -183,6 +183,7 @@ void OpenGLPropRenderer::render(const Math::Vector3d &position, float direction,
 				vertex.r = color.x();
 				vertex.g = color.y();
 				vertex.b = color.z();
+				vertex.a = 1.0f; /* needed for compatibility with OpenGL ES 1.x */
 			}
 			_faceVBO[index] = vertex;
 		}
@@ -199,7 +200,7 @@ void OpenGLPropRenderer::render(const Math::Vector3d &position, float direction,
 			glTexCoordPointer(2, GL_FLOAT, sizeof(PropVertex), &_faceVBO[0].texS);
 		glNormalPointer(GL_FLOAT, sizeof(PropVertex), &_faceVBO[0].nx);
 		if (_gfx->computeLightsEnabled())
-			glColorPointer(3, GL_FLOAT, sizeof(PropVertex), &_faceVBO[0].r);
+			glColorPointer(4, GL_FLOAT, sizeof(PropVertex), &_faceVBO[0].r);
 
 		glDrawElements(GL_TRIANGLES, face->vertexIndices.size(), GL_UNSIGNED_INT, vertexIndices);
 
diff --git a/engines/stark/gfx/openglprop.h b/engines/stark/gfx/openglprop.h
index 09914436460..06111b8c008 100644
--- a/engines/stark/gfx/openglprop.h
+++ b/engines/stark/gfx/openglprop.h
@@ -53,6 +53,7 @@ struct _PropVertex {
 	float r;
 	float g;
 	float b;
+	float a;
 };
 typedef _PropVertex PropVertex;
 




More information about the Scummvm-git-logs mailing list