#pragma once #include "dvc_config.h" #include "dvc_pre_declare.h" DV_CORE_BEGIN_NAMESPACE class DV_CORE_API Mesh { public: typedef std::map PrimitiveAttributes; struct Primitive { PrimitiveType type; PrimitiveAttributes attributes; DeviceBufferAccessorConstPtr indices; MaterialPtr material; }; typedef std::shared_ptr PrimitivePtr; typedef std::shared_ptr PrimitiveConstPtr; typedef std::vector PrimitiveArray; public: int32_t getID(void) const { return m_id; } const std::string& getName(void) const { return m_name; } PrimitivePtr newPrimitive(void); int32_t getPrimitiveCounts(void) const { return (int32_t)m_primitiveArray.size(); } PrimitiveConstPtr getPrimitive(int32_t index) const; private: int32_t m_id; std::string m_name; PrimitiveArray m_primitiveArray; public: Mesh(int32_t id, const std::string& name); ~Mesh(); }; DV_CORE_END_NAMESPACE