#pragma once #include "Material.hpp" #include "Mesh.hpp" #include "RcPtr.hpp" #include #include class RenderObject { public: glm::mat4 worldMatrix; private: RcPtr mMaterial; RcPtr mMesh; GLuint mVao; public: RenderObject(GpuMesh* mesh, Material* material); ~RenderObject(); GLuint GetGLVao() const { return mVao; } Material* GetMaterial() const { return mMaterial.Get(); } GpuMesh* GetMesh() const { return mMesh.Get(); } }; class Camera { public: glm::mat4 viewMatrix; glm::mat4 projectionMatrix; public: void Move(glm::vec3 pos); void LookAt(glm::vec3 pos); }; class Renderer { private: Camera* mCam; public: void BeginFrame(); void EndFrame(); void Draw(RenderObject& object); };