#pragma once #include "../../Plugins/OpenGLRendering/OGLRenderer.h" #include "../../Plugins/OpenGLRendering/OGLShader.h" #include "../../Plugins/OpenGLRendering/OGLTexture.h" #include "../../Plugins/OpenGLRendering/OGLMesh.h" #include "../CSC8503Common/GameWorld.h" namespace NCL { class Maths::Vector3; class Maths::Vector4; namespace CSC8503 { class RenderObject; class GameTechRenderer : public OGLRenderer { public: GameTechRenderer(GameWorld& world); ~GameTechRenderer(); protected: void RenderFrame() override; Matrix4 SetupDebugLineMatrix() const override; Matrix4 SetupDebugStringMatrix()const override; OGLShader* defaultShader; GameWorld& gameWorld; void BuildObjectList(); void SortObjectList(); void RenderShadowMap(); void RenderCamera(); void RenderSkybox(); void LoadSkybox(); vector<const RenderObject*> activeObjects; OGLShader* skyboxShader; OGLMesh* skyboxMesh; GLuint skyboxTex; //shadow mapping things OGLShader* shadowShader; GLuint shadowTex; GLuint shadowFBO; Matrix4 shadowMatrix; Vector4 lightColour; float lightRadius; Vector3 lightPosition; }; } }