[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