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> 快么?

这个需要验证 ???

posted @ 2012-07-26 20:10  geometry_  阅读(431)  评论(0编辑  收藏  举报