mirror of
https://gitdl.cn/https://github.com/chakralinux/desktop.git
synced 2025-01-24 02:22:13 +08:00
64 lines
2.5 KiB
Diff
64 lines
2.5 KiB
Diff
--- a/OgreMain/include/OgreProgressiveMeshGenerator.h 2015-09-03 04:58:34.119585218 +0200
|
|
+++ b/OgreMain/include/OgreProgressiveMeshGenerator.h 2015-09-03 04:58:39.342585320 +0200
|
|
@@ -215,7 +215,40 @@
|
|
void tuneContainerSize();
|
|
void addVertexData(VertexData* vertexData, bool useSharedVertexLookup);
|
|
template<typename IndexType>
|
|
- void addIndexDataImpl(IndexType* iPos, const IndexType* iEnd, VertexLookupList& lookup, unsigned short submeshID);
|
|
+ void addIndexDataImpl(IndexType* iPos, const IndexType* iEnd, VertexLookupList& lookup, unsigned short submeshID)
|
|
+ {
|
|
+
|
|
+ // Loop through all triangles and connect them to the vertices.
|
|
+ for (; iPos < iEnd; iPos += 3) {
|
|
+ // It should never reallocate or every pointer will be invalid.
|
|
+ OgreAssert(mTriangleList.capacity() > mTriangleList.size(), "");
|
|
+ mTriangleList.push_back(PMTriangle());
|
|
+ PMTriangle* tri = &mTriangleList.back();
|
|
+ tri->isRemoved = false;
|
|
+ tri->submeshID = submeshID;
|
|
+ for (int i = 0; i < 3; i++) {
|
|
+ // Invalid index: Index is bigger then vertex buffer size.
|
|
+ OgreAssert(iPos[i] < lookup.size(), "");
|
|
+ tri->vertexID[i] = iPos[i];
|
|
+ tri->vertex[i] = lookup[iPos[i]];
|
|
+ }
|
|
+ if (tri->isMalformed()) {
|
|
+#if OGRE_DEBUG_MODE
|
|
+ stringstream str;
|
|
+ str << "In " << mMeshName << " malformed triangle found with ID: " << getTriangleID(tri) << ". " <<
|
|
+ std::endl;
|
|
+ printTriangle(tri, str);
|
|
+ str << "It will be excluded from LOD level calculations.";
|
|
+ LogManager::getSingleton().stream() << str.str();
|
|
+#endif
|
|
+ tri->isRemoved = true;
|
|
+ mIndexBufferInfoList[tri->submeshID].indexCount -= 3;
|
|
+ continue;
|
|
+ }
|
|
+ tri->computeNormal();
|
|
+ addTriangleToEdges(tri);
|
|
+ }
|
|
+ }
|
|
void addIndexData(IndexData* indexData, bool useSharedVertexLookup, unsigned short submeshID);
|
|
|
|
void computeCosts();
|
|
--- a/OgreMain/src/OgreProgressiveMeshGenerator.cpp 2015-09-03 04:58:34.879585233 +0200
|
|
+++ b/OgreMain/src/OgreProgressiveMeshGenerator.cpp 2015-09-03 04:58:43.944585409 +0200
|
|
@@ -219,6 +219,8 @@
|
|
}
|
|
vbuf->unlock();
|
|
}
|
|
+/// Called from OgreQueuedProgressiveMeshGenerator.cpp, so it can not be defined in here.
|
|
+#if 0
|
|
template<typename IndexType>
|
|
void ProgressiveMeshGenerator::addIndexDataImpl(IndexType* iPos, const IndexType* iEnd,
|
|
VertexLookupList& lookup,
|
|
@@ -256,6 +258,7 @@
|
|
addTriangleToEdges(tri);
|
|
}
|
|
}
|
|
+#endif // 0
|
|
|
|
void ProgressiveMeshGenerator::addIndexData(IndexData* indexData, bool useSharedVertexLookup, unsigned short submeshID)
|
|
{
|