From 0be663be115672f85a7a851c42a0b93af116a389 Mon Sep 17 00:00:00 2001 From: sippeangelo Date: Tue, 6 Oct 2015 20:56:49 +0200 Subject: [PATCH] Created interface class for Renderer --- include/Rendering/BaseRenderer.h | 63 +++++++++++++++++++ include/Rendering/OpenGL/Rendering/Renderer.h | 30 ++------- 2 files changed, 67 insertions(+), 26 deletions(-) create mode 100644 include/Rendering/BaseRenderer.h diff --git a/include/Rendering/BaseRenderer.h b/include/Rendering/BaseRenderer.h new file mode 100644 index 0000000..35cf46c --- /dev/null +++ b/include/Rendering/BaseRenderer.h @@ -0,0 +1,63 @@ +/* + This file is part of Daydream Engine. + Copyright 2014 Adam Byléhn, Tobias Dahl, Simon Holmberg, Viktor Ljung + + Daydream Engine is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Daydream Engine is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with Daydream Engine. If not, see . +*/ + +#ifndef DD_BASERENDERER_H__ +#define DD_BASERENDERER_H__ + +#include "Core/Util/Rectangle.h" +#include "Rendering/Camera.h" +#include "Rendering/RenderQueue.h" + +namespace dd +{ + +class BaseRenderer +{ +public: + GLFWwindow* Window() const { return m_Window; } + Rectangle Resolution() const { return m_Resolution; } + void SetResolution(const Rectangle& resolution) { m_Resolution = resolution; } + bool Fullscreen() { return m_Fullscreen; } + void SetFullscreen(bool fullscreen) { m_Fullscreen = fullscreen; } + bool VSYNC() const { return m_VSYNC; } + void SetVSYNC(bool vsync) { m_VSYNC = vsync; } + const dd::Camera* Camera() const { return m_Camera; } + void SetCamera(const dd::Camera* camera) + { + if (camera == nullptr) { + m_Camera = m_DefaultCamera.get(); + } else { + m_Camera = camera; + } + } + + virtual void Initialize() = 0; + virtual void Draw(RenderQueueCollection& rq) = 0; + +protected: + Rectangle m_Resolution = Rectangle(1280, 720); + bool m_Fullscreen = false; + bool m_VSYNC = false; + std::unique_ptr m_DefaultCamera = nullptr; + const dd::Camera* m_Camera = nullptr; + GLFWwindow* m_Window = nullptr; +}; + +} + +#endif // Renderer_h__ diff --git a/include/Rendering/OpenGL/Rendering/Renderer.h b/include/Rendering/OpenGL/Rendering/Renderer.h index 56b8fc6..6ff8d60 100755 --- a/include/Rendering/OpenGL/Rendering/Renderer.h +++ b/include/Rendering/OpenGL/Rendering/Renderer.h @@ -19,6 +19,7 @@ #ifndef DD_RENDERER_H__ #define DD_RENDERER_H__ +#include "Rendering/BaseRenderer.h" #include "Core/Util/Rectangle.h" #include "Rendering/Camera.h" #include "Rendering/RenderQueue.h" @@ -33,39 +34,16 @@ namespace dd { -class Renderer +class Renderer : public BaseRenderer { public: - GLFWwindow* Window() const { return m_Window; } - Rectangle Resolution() const { return m_Resolution; } - void SetResolution(const Rectangle& resolution) { m_Resolution = resolution; } - bool Fullscreen() { return m_Fullscreen; } - void SetFullscreen(bool fullscreen) { m_Fullscreen = fullscreen; } - bool VSYNC() const { return m_VSYNC; } - void SetVSYNC(bool vsync) { m_VSYNC = vsync; } - const dd::Camera* Camera() const { return m_Camera; } - void SetCamera(const dd::Camera* camera) - { - if (camera == nullptr) { - m_Camera = m_DefaultCamera.get(); - } else { - m_Camera = camera; - } - } - void Initialize(); - void Draw(RenderQueueCollection& rq); + void Initialize() override; + void Draw(RenderQueueCollection& rq) override; void PlaceCamera(glm::vec3 position); private: - Rectangle m_Resolution = Rectangle(1280, 720); - bool m_Fullscreen = false; - bool m_VSYNC = false; - std::unique_ptr m_DefaultCamera = nullptr; - const dd::Camera* m_Camera = nullptr; - int m_GLVersion[2]; std::string m_GLVendor; - GLFWwindow* m_Window = nullptr; ShaderProgram* m_SpDeferred1; ShaderProgram* m_SpDeferred2;