#pragma once #include "engine_api.h" #include "resource.hpp" #include "gfx.hpp" #include #include #include #include struct Vertex { glm::vec3 pos; glm::vec3 norm; glm::vec2 uv; }; namespace engine { class GFXDevice; } namespace engine::resources { class ENGINE_API Mesh : public Resource { public: Mesh(GFXDevice* gfx, const std::vector& vertices); Mesh(GFXDevice* gfx, const std::vector& vertices, const std::vector& indices); Mesh(GFXDevice* gfx, const std::filesystem::path& resPath); ~Mesh() override; void drawMesh(const gfx::Pipeline* pipeline); std::vector m_vertices; std::vector m_indices; private: const gfx::Buffer* vb; const gfx::Buffer* ib; GFXDevice* gfx; void initMesh(); }; }