[Scummvm-git-logs] scummvm master -> 5d3b98e03d096d6f48d3886395fc4cfd2808b328

aquadran noreply at scummvm.org
Sat Oct 12 06:29:03 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:
5d3b98e03d WINTERMUTE: Removed old _indexData


Commit: 5d3b98e03d096d6f48d3886395fc4cfd2808b328
    https://github.com/scummvm/scummvm/commit/5d3b98e03d096d6f48d3886395fc4cfd2808b328
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2024-10-12T08:28:58+02:00

Commit Message:
WINTERMUTE: Removed old _indexData

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.cpp
    engines/wintermute/base/gfx/xskinmesh_loader.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 5d5d215548e..4f0386a93d0 100644
--- a/engines/wintermute/base/gfx/opengl/meshx_opengl.cpp
+++ b/engines/wintermute/base/gfx/opengl/meshx_opengl.cpp
@@ -49,7 +49,7 @@ XMeshOpenGL::~XMeshOpenGL() {
 //////////////////////////////////////////////////////////////////////////
 bool XMeshOpenGL::render(XModel *model) {
 	float *vertexData = _skinMesh->_mesh->_vertexData;
-	auto indexData = _skinMesh->_mesh->_indexData;
+	auto indexData = (uint32 *)_skinMesh->_dxmesh->getIndexBuffer().ptr();
 	if (vertexData == nullptr) {
 		return false;
 	}
@@ -101,7 +101,7 @@ bool XMeshOpenGL::render(XModel *model) {
 		if (textureEnable)
 			glTexCoordPointer(2, GL_FLOAT, XSkinMeshLoader::kVertexComponentCount * sizeof(float), vertexData + XSkinMeshLoader::kTextureCoordOffset);
 
-		glDrawElements(GL_TRIANGLES, attrsTable->_ptr[i]._faceCount * 3, GL_UNSIGNED_SHORT, indexData.data() + attrsTable->_ptr[i]._faceStart * 3);
+		glDrawElements(GL_TRIANGLES, attrsTable->_ptr[i]._faceCount * 3, GL_UNSIGNED_INT, indexData + 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 5c7462f0333..19204640f36 100644
--- a/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp
+++ b/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp
@@ -53,7 +53,8 @@ XMeshOpenGLShader::~XMeshOpenGLShader() {
 
 bool XMeshOpenGLShader::loadFromXData(const Common::String &filename, XFileData *xobj) {
 	if (XMesh::loadFromXData(filename, xobj)) {
-		auto indexData = _skinMesh->_mesh->_indexData;
+		auto indexData = _skinMesh->_dxmesh->getIndexBuffer().ptr();
+		uint32 indexDataSize = _skinMesh->_dxmesh->getIndexBuffer().size() / sizeof(uint32);
 		float *vertexData = _skinMesh->_mesh->_vertexData;
 		uint32 vertexCount = _skinMesh->_mesh->_vertexCount;
 
@@ -61,7 +62,7 @@ bool XMeshOpenGLShader::loadFromXData(const Common::String &filename, XFileData
 		glBufferData(GL_ARRAY_BUFFER, 4 * XSkinMeshLoader::kVertexComponentCount * vertexCount, vertexData, GL_DYNAMIC_DRAW);
 
 		glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBuffer);
-		glBufferData(GL_ELEMENT_ARRAY_BUFFER, 2 * indexData.size(), indexData.data(), GL_STATIC_DRAW);
+		glBufferData(GL_ELEMENT_ARRAY_BUFFER, 4 * indexDataSize, indexData, GL_STATIC_DRAW);
 
 		return true;
 	}
@@ -119,8 +120,8 @@ bool XMeshOpenGLShader::render(XModel *model) {
 		_shader->setUniform("diffuse", diffuse);
 		_shader->setUniform("ambient", diffuse);
 
-		size_t offset = 2 * attrsTable->_ptr[i]._faceStart * 3;
-		glDrawElements(GL_TRIANGLES, attrsTable->_ptr[i]._faceCount * 3, GL_UNSIGNED_SHORT, (void *)offset);
+		size_t offset = 4 * attrsTable->_ptr[i]._faceStart * 3;
+		glDrawElements(GL_TRIANGLES, attrsTable->_ptr[i]._faceCount * 3, GL_UNSIGNED_INT, (void *)offset);
 	}
 
 	glBindTexture(GL_TEXTURE_2D, 0);
diff --git a/engines/wintermute/base/gfx/xmesh.cpp b/engines/wintermute/base/gfx/xmesh.cpp
index ad3d7b50c06..5acb570ec97 100644
--- a/engines/wintermute/base/gfx/xmesh.cpp
+++ b/engines/wintermute/base/gfx/xmesh.cpp
@@ -293,11 +293,12 @@ bool XMesh::updateShadowVol(ShadowVolume *shadow, Math::Matrix4 &modelMat, const
 
 	uint32 numEdges = 0;
 
-	auto indexData = _skinMesh->_mesh->_indexData;
-	Common::Array<bool> isFront(indexData.size() / 3, false);
+	auto indexData = (uint32 *)_skinMesh->_dxmesh->getIndexBuffer().ptr();
+	uint32 indexDataSize = _skinMesh->_dxmesh->getIndexBuffer().size() / sizeof(uint32);
+	Common::Array<bool> isFront(indexDataSize / 3, false);
 
 	// First pass : for each face, record if it is front or back facing the light
-	for (uint32 i = 0; i < indexData.size() / 3; i++) {
+	for (uint32 i = 0; i < indexDataSize / 3; i++) {
 		uint16 index0 = indexData[3 * i + 0];
 		uint16 index1 = indexData[3 * i + 1];
 		uint16 index2 = indexData[3 * i + 2];
@@ -317,14 +318,14 @@ bool XMesh::updateShadowVol(ShadowVolume *shadow, Math::Matrix4 &modelMat, const
 	}
 
 	// Allocate a temporary edge list
-	Common::Array<uint16> edges(indexData.size() * 2, 0);
+	Common::Array<uint16> edges(indexDataSize * 2, 0);
 
 	// First pass : for each face, record if it is front or back facing the light
-	for (uint32 i = 0; i < indexData.size() / 3; i++) {
+	for (uint32 i = 0; i < indexDataSize / 3; i++) {
 		if (isFront[i]) {
-			uint16 wFace0 = indexData[3 * i + 0];
-			uint16 wFace1 = indexData[3 * i + 1];
-			uint16 wFace2 = indexData[3 * i + 2];
+			uint32 wFace0 = indexData[3 * i + 0];
+			uint32 wFace1 = indexData[3 * i + 1];
+			uint32 wFace2 = indexData[3 * i + 2];
 
 			uint32 adjacent0 = _adjacency[3 * i + 0];
 			uint32 adjacent1 = _adjacency[3 * i + 1];
@@ -378,8 +379,9 @@ bool XMesh::pickPoly(Math::Vector3d *pickRayOrig, Math::Vector3d *pickRayDir) {
 
 	bool res = false;
 
-	auto indexData = _skinMesh->_mesh->_indexData;
-	for (uint16 i = 0; i < indexData.size(); i += 3) {
+	auto indexData = _skinMesh->_dxmesh->getIndexBuffer().ptr();
+	uint32 indexDataSize = _skinMesh->_dxmesh->getIndexBuffer().size() / sizeof(uint32);
+	for (uint16 i = 0; i < indexDataSize; i += 3) {
 		uint16 index1 = indexData[i + 0];
 		uint16 index2 = indexData[i + 1];
 		uint16 index3 = indexData[i + 2];
diff --git a/engines/wintermute/base/gfx/xskinmesh.cpp b/engines/wintermute/base/gfx/xskinmesh.cpp
index b9eb12258da..f5f2e0baca6 100644
--- a/engines/wintermute/base/gfx/xskinmesh.cpp
+++ b/engines/wintermute/base/gfx/xskinmesh.cpp
@@ -33,8 +33,6 @@
 #include "engines/wintermute/base/gfx/xskinmesh.h"
 #include "engines/wintermute/base/gfx/xmath.h"
 
-#include "math/vector3d.h"
-
 namespace Wintermute {
 
 struct MeshData {
diff --git a/engines/wintermute/base/gfx/xskinmesh_loader.cpp b/engines/wintermute/base/gfx/xskinmesh_loader.cpp
index 05a3b22b58c..e30c18ca319 100644
--- a/engines/wintermute/base/gfx/xskinmesh_loader.cpp
+++ b/engines/wintermute/base/gfx/xskinmesh_loader.cpp
@@ -105,12 +105,6 @@ void XSkinMeshLoader::loadMesh(const Common::String &filename, XFileData *xobj)
 			_vertexData[i * kVertexComponentCount + kTextureCoordOffset + 1] = vertexBuffer[i * vertexSize + textureOffset + 1];
 		}
 	}
-
-
-	uint32 *indexPtr = (uint32 *)_dxmesh->getIndexBuffer().ptr();
-	for (uint i = 0; i < _dxmesh->getIndexBuffer().size() / sizeof(uint32); ++i) {
-		_indexData.push_back(indexPtr[i]);
-	}
 }
 
 } // namespace Wintermute
diff --git a/engines/wintermute/base/gfx/xskinmesh_loader.h b/engines/wintermute/base/gfx/xskinmesh_loader.h
index adda1965e46..cb44e174d1f 100644
--- a/engines/wintermute/base/gfx/xskinmesh_loader.h
+++ b/engines/wintermute/base/gfx/xskinmesh_loader.h
@@ -69,7 +69,6 @@ protected:
 	float *_vertexPositionData;
 	float *_vertexNormalData;
 	uint32 _vertexCount;
-	Common::Array<uint16> _indexData;
 
 	BaseArray<Math::Matrix4 *> _boneMatrices;
 	BaseArray<SkinWeights> _skinWeightsList;




More information about the Scummvm-git-logs mailing list