You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/dev-games/ogre/files/ogre-1.9.0-gcc52.patch

64 lines
2.3 KiB

--- a/OgreMain/include/OgreProgressiveMeshGenerator.h
+++ b/OgreMain/include/OgreProgressiveMeshGenerator.h
@@ -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
+++ b/OgreMain/src/OgreProgressiveMeshGenerator.cpp
@@ -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)
{