MeshInformer --wxsj
class MeshInformer { public: static size_t getVertices(Ogre::Vector3* pDst, const Ogre::VertexData* vertexData); template <typename DestType, typename SrcType> static size_t getTriangleIndices(DestType* pDest, const SrcType* pSrc, size_t count, size_t offset, int operationType); static size_t getTriangles(size_t* pDst, const Ogre::IndexData* indexData, size_t offset, int operationType); static void getMeshStatistics(const Ogre::MeshPtr& mesh, size_t& numVertices, size_t& numIndices); static void getMeshTriangles(const Ogre::MeshPtr& mesh, std::vector<Ogre::Vector3>& vertices, std::vector<size_t>& indices, std::vector<size_t>* indexOffsets); static void getEntityStatistics(const Ogre::Entity* entity, size_t& numVertices, size_t& numIndices); static void getEntityTriangles(const Ogre::Entity* entity, std::vector<Ogre::Vector3>& vertices, std::vector<size_t>& indices, std::vector<size_t>* indexOffsets); };
wxsj 中世界mesh 与实体mesh 和opcode 打交道时vertices 和triangle index 是通过这个工具类来实现的。
具体是从渲染的数据缓存中读取数据,
OGRE 中的数据藏得很深或者确切说为了节省内存使用,数据一般都是共享的。这些数据都是从渲染的buffer 中提取的
所以看起来有点绕,
另外a[] 一维数组实现 std::vector<TirEle> 要比std::vector<int> 快么?
这个需要验证 ???