[Scummvm-git-logs] scummvm master -> 76d49aefc4bd61eefbf963b21df767c35bd391e2

aquadran noreply at scummvm.org
Thu Oct 3 10:05:23 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:
76d49aefc4 WINTERMUTE: WME3D: Removed indexRanges and materialIndices


Commit: 76d49aefc4bd61eefbf963b21df767c35bd391e2
    https://github.com/scummvm/scummvm/commit/76d49aefc4bd61eefbf963b21df767c35bd391e2
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2024-10-03T12:05:16+02:00

Commit Message:
WINTERMUTE: WME3D: Removed indexRanges and materialIndices

Changed paths:
    engines/wintermute/base/gfx/opengl/meshx_opengl.cpp
    engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp
    engines/wintermute/base/gfx/xmesh.cpp
    engines/wintermute/base/gfx/xskinmesh_loader.h


diff --git a/engines/wintermute/base/gfx/opengl/meshx_opengl.cpp b/engines/wintermute/base/gfx/opengl/meshx_opengl.cpp
index f6f82ee18d5..5d5d215548e 100644
--- a/engines/wintermute/base/gfx/opengl/meshx_opengl.cpp
+++ b/engines/wintermute/base/gfx/opengl/meshx_opengl.cpp
@@ -50,8 +50,6 @@ XMeshOpenGL::~XMeshOpenGL() {
 bool XMeshOpenGL::render(XModel *model) {
 	float *vertexData = _skinMesh->_mesh->_vertexData;
 	auto indexData = _skinMesh->_mesh->_indexData;
-	auto indexRanges = _skinMesh->_mesh->_indexRanges;
-	auto materialIndices = _skinMesh->_mesh->_materialIndices;
 	if (vertexData == nullptr) {
 		return false;
 	}
@@ -103,7 +101,7 @@ bool XMeshOpenGL::render(XModel *model) {
 		if (textureEnable)
 			glTexCoordPointer(2, GL_FLOAT, XSkinMeshLoader::kVertexComponentCount * sizeof(float), vertexData + XSkinMeshLoader::kTextureCoordOffset);
 
-		glDrawElements(GL_TRIANGLES, indexRanges[i + 1] - indexRanges[i], GL_UNSIGNED_SHORT, indexData.data() + indexRanges[i]);
+		glDrawElements(GL_TRIANGLES, attrsTable->_ptr[i]._faceCount * 3, GL_UNSIGNED_SHORT, indexData.data() + attrsTable->_ptr[i]._faceStart * 3);
 
 		glDisableClientState(GL_VERTEX_ARRAY);
 		glDisableClientState(GL_NORMAL_ARRAY);
diff --git a/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp b/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp
index 2ad27866e52..5c7462f0333 100644
--- a/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp
+++ b/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp
@@ -72,8 +72,6 @@ bool XMeshOpenGLShader::loadFromXData(const Common::String &filename, XFileData
 //////////////////////////////////////////////////////////////////////////
 bool XMeshOpenGLShader::render(XModel *model) {
 	float *vertexData = _skinMesh->_mesh->_vertexData;
-	auto indexRanges = _skinMesh->_mesh->_indexRanges;
-	auto materialIndices = _skinMesh->_mesh->_materialIndices;
 	if (vertexData == nullptr) {
 		return false;
 	}
@@ -121,8 +119,8 @@ bool XMeshOpenGLShader::render(XModel *model) {
 		_shader->setUniform("diffuse", diffuse);
 		_shader->setUniform("ambient", diffuse);
 
-		size_t offset = 2 * indexRanges[i];
-		glDrawElements(GL_TRIANGLES, indexRanges[i + 1] - indexRanges[i], GL_UNSIGNED_SHORT, (void *)offset);
+		size_t offset = 2 * attrsTable->_ptr[i]._faceStart * 3;
+		glDrawElements(GL_TRIANGLES, attrsTable->_ptr[i]._faceCount * 3, GL_UNSIGNED_SHORT, (void *)offset);
 	}
 
 	glBindTexture(GL_TEXTURE_2D, 0);
@@ -140,7 +138,6 @@ bool XMeshOpenGLShader::render(XModel *model) {
 
 bool XMeshOpenGLShader::renderFlatShadowModel() {
 	float *vertexData = _skinMesh->_mesh->_vertexData;
-	auto indexRanges = _skinMesh->_mesh->_indexRanges;
 	if (vertexData == nullptr) {
 		return false;
 	}
@@ -150,7 +147,7 @@ bool XMeshOpenGLShader::renderFlatShadowModel() {
 	_flatShadowShader->enableVertexAttribute("position", _vertexBuffer, 3, GL_FLOAT, false, 4 * XSkinMeshLoader::kVertexComponentCount, 4 * XSkinMeshLoader::kPositionOffset);
 	_flatShadowShader->use(true);
 
-	glDrawElements(GL_TRIANGLES, indexRanges.back(), GL_UNSIGNED_SHORT, 0);
+	glDrawElements(GL_TRIANGLES, _skinMesh->_mesh->_dxmesh->getNumFaces() * 3, GL_UNSIGNED_SHORT, 0);
 
 	glBindBuffer(GL_ARRAY_BUFFER, 0);
 	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
diff --git a/engines/wintermute/base/gfx/xmesh.cpp b/engines/wintermute/base/gfx/xmesh.cpp
index 5fbb5460989..739eeace5d0 100644
--- a/engines/wintermute/base/gfx/xmesh.cpp
+++ b/engines/wintermute/base/gfx/xmesh.cpp
@@ -98,11 +98,7 @@ bool XMesh::loadFromXData(const Common::String &filename, XFileData *xobj) {
 		mat->_material._diffuse.color._b = 0.5f;
 		mat->_material._specular = mat->_material._diffuse;
 		mat->_material._ambient = mat->_material._diffuse;
-
 		_materials.add(mat);
-
-		meshLoader->_indexRanges.push_back(0);
-		meshLoader->_indexRanges.push_back(meshLoader->_indexData.size());
 	} else {
 		// load the materials
 		DXMaterial *fileMats = (DXMaterial *)bufMaterials.ptr();
@@ -113,17 +109,8 @@ bool XMesh::loadFromXData(const Common::String &filename, XFileData *xobj) {
 			if (fileMats[i]._textureFilename[0] != '\0') {
 				mat->setTexture(PathUtil::getDirectoryName(filename) + fileMats[i]._textureFilename, true);
 			}
-
 			_materials.add(mat);
 		}
-
-		auto atribTable = mesh->getAttributeTable();
-		for (uint i = 0; i < atribTable->_size; i++) {
-			meshLoader->_materialIndices.push_back(atribTable->_ptr[i]._attribId);
-			meshLoader->_indexRanges.push_back(atribTable->_ptr[i]._faceStart * 3);
-		}
-
-		meshLoader->_indexRanges.push_back((atribTable->_ptr[atribTable->_size - 1]._faceStart + atribTable->_ptr[atribTable->_size - 1]._faceCount) * 3);
 	}
 
 	_skinnedMesh = false;
diff --git a/engines/wintermute/base/gfx/xskinmesh_loader.h b/engines/wintermute/base/gfx/xskinmesh_loader.h
index 5257c0275a1..a151bd371f6 100644
--- a/engines/wintermute/base/gfx/xskinmesh_loader.h
+++ b/engines/wintermute/base/gfx/xskinmesh_loader.h
@@ -69,11 +69,6 @@ protected:
 	bool generateAdjacency(Common::Array<uint32> &adjacency);
 	bool adjacentEdge(uint16 index1, uint16 index2, uint16 index3, uint16 index4);
 
-public:
-	
-	BaseArray<int> _indexRanges;
-	BaseArray<int> _materialIndices;
-
 protected:
 
 	float *_vertexData;




More information about the Scummvm-git-logs mailing list