#ifndef __MLX_RENDERER_MESH__ #define __MLX_RENDERER_MESH__ #include #include #include namespace mlx { class Mesh { public: struct SubMesh { VertexBuffer vbo; IndexBuffer ibo; std::size_t triangle_count = 0; inline SubMesh(const std::vector& vertices, const std::vector& indices); }; public: Mesh() = default; void Draw(VkCommandBuffer cmd, std::size_t& drawcalls, std::size_t& polygondrawn) const noexcept; void Draw(VkCommandBuffer cmd, std::size_t& drawcalls, std::size_t& polygondrawn, std::size_t submesh_index) const noexcept; inline std::size_t GetSubMeshCount() const { return m_sub_meshes.size(); } inline void AddSubMesh(SubMesh mesh) { m_sub_meshes.emplace_back(std::move(mesh)); } [[nodiscard]] inline SubMesh& GetSubMesh(std::size_t index) { return m_sub_meshes.at(index); } ~Mesh(); private: std::vector m_sub_meshes; }; } #include #endif