[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