#ifndef Renderer_h__ #define Renderer_h__ #include #include #include #include #include #include #define GLFW_INCLUDE_GLU #include #include #define GLM_FORCE_RADIANS #include #include #include #include #include #include #include "glerror.h" #include "Camera.h" #include "ShaderProgram.h" #include "Model.h" class Renderer { public: ShaderProgram m_ShaderProgram; glm::mat4 viewMatrix; glm::mat4 projectionMatrix; int HEIGHT, WIDTH; struct ModelData { std::shared_ptr model; glm::mat4 ModelMatrix; ModelData(std::shared_ptr _model, glm::mat4 _modelMatrix) : model(_model), ModelMatrix(_modelMatrix) {} }; std::vector ModelsToRender; Renderer(); void Initialize(); void Draw(double dt); void DrawText(); void AddModelToDraw(std::shared_ptr model, glm::vec3 position, glm::quat orientation); void AddTextToDraw(); void LoadContent(); GLFWwindow* GetWindow() const { return m_Window; } std::shared_ptr GetCamera() const { return m_Camera; } private: GLFWwindow* m_Window; GLint m_glVersion[2]; GLchar* m_glVendor; std::shared_ptr m_Camera; GLuint vertexArrayObject; }; #endif // Renderer_h__