From 72420d42487fe09bf1cf87e63e78cb2efe3d71ab Mon Sep 17 00:00:00 2001 From: sippeangelo Date: Sun, 1 Jun 2014 03:05:42 +0200 Subject: [PATCH] WIP Fullscreen Stuff (UI not scaling properly yet) --- assets | 2 +- src/Engine.h | 10 ++++++---- src/GUI/Frame.h | 4 ++++ src/GUI/GameFrame.h | 4 ++-- src/Renderer.cpp | 14 +++++++++----- src/Renderer.h | 12 ++++++++++++ 6 files changed, 34 insertions(+), 12 deletions(-) diff --git a/assets b/assets index d5991da..7cfd17f 160000 --- a/assets +++ b/assets @@ -1 +1 @@ -Subproject commit d5991da346f2ee33353c74c243c2b2d72336c9ed +Subproject commit 7cfd17fb7b5c91c3e1f8fad6f3cc737f9483b6e7 diff --git a/src/Engine.h b/src/Engine.h index 22f8451..7094615 100755 --- a/src/Engine.h +++ b/src/Engine.h @@ -25,16 +25,18 @@ public: m_ResourceManager->RegisterType("Model", [rm](std::string resourceName) { return new Model(rm, *rm->Load("OBJ", resourceName)); }); m_ResourceManager->RegisterType("Texture", [](std::string resourceName) { return new Texture(resourceName); }); + m_FrameStack = new GUI::Frame(m_EventBroker, m_ResourceManager); + m_FrameStack->Width = 1920; + m_FrameStack->Height = 1080; + m_Renderer = std::make_shared(m_ResourceManager); + m_Renderer->SetFullscreen(true); + m_Renderer->SetResolution(*static_cast(m_FrameStack)); m_Renderer->Initialize(); m_InputManager = std::make_shared(m_Renderer->GetWindow(), m_EventBroker); - m_FrameStack = new GUI::Frame(m_EventBroker, m_ResourceManager); - m_FrameStack->Width = 1280; - m_FrameStack->Height = 720; new GUI::GameFrame(m_FrameStack, "GameFrame"); - //m_World = std::make_shared(m_EventBroker, m_ResourceManager); //m_World->Initialize(); diff --git a/src/GUI/Frame.h b/src/GUI/Frame.h index 2e01b48..e40d73a 100644 --- a/src/GUI/Frame.h +++ b/src/GUI/Frame.h @@ -25,6 +25,9 @@ public: Bottom }; + static const float BaseWidth = 1280.f; + static const float BaseHeight = 720.f; + // Set up a base frame with an event broker Frame(std::shared_ptr<::EventBroker> eventBroker, std::shared_ptr<::ResourceManager> resourceManager) : EventBroker(eventBroker) @@ -180,6 +183,7 @@ protected: std::string m_Name; int m_Layer; bool m_Hidden; + glm::vec2 Scale; std::shared_ptr m_Parent; typedef std::multimap> Children_t; // name -> frame diff --git a/src/GUI/GameFrame.h b/src/GUI/GameFrame.h index a599fcb..6bd5b2f 100644 --- a/src/GUI/GameFrame.h +++ b/src/GUI/GameFrame.h @@ -26,13 +26,13 @@ public: { vp1 = new Viewport(worldFrame, "Viewport1", m_World); vp1->X = 0; - vp1->Width = 640; + vp1->Width = this->Width / 2.f; //new PlayerHUD(vp1, "PlayerHUD", m_World, 1); new VehicleSelection(vp1, "VehicleSelection", m_World, 1); vp2 = new Viewport(worldFrame, "Viewport2", m_World); vp2->X = vp1->Right(); - vp2->Width = 640; + vp2->Width = this->Width / 2.f; new PlayerHUD(vp2, "PlayerHUD", m_World, 2); m_FreeCamViewport = new Viewport(worldFrame, "ViewportFreeCam", m_World); diff --git a/src/Renderer.cpp b/src/Renderer.cpp index d82d851..0c1fd1d 100755 --- a/src/Renderer.cpp +++ b/src/Renderer.cpp @@ -5,6 +5,9 @@ Renderer::Renderer(std::shared_ptr<::ResourceManager> resourceManager) : ResourceManager(resourceManager) { m_VSync = false; + m_Fullscreen = false; + m_Width = 1280; + m_Height = 720; #ifdef DEBUG m_DrawNormals = false; m_DrawWireframe = false; @@ -38,11 +41,12 @@ void Renderer::Initialize() } // Create a window - m_Width = 1280; - m_Height = 720; - // Antialiasing - //glfwWindowHint(GLFW_SAMPLES, 16); - m_Window = glfwCreateWindow(m_Width, m_Height, "OpenGL", nullptr, nullptr); + GLFWmonitor* monitor = nullptr; + if (m_Fullscreen) + { + monitor = glfwGetPrimaryMonitor(); + } + m_Window = glfwCreateWindow(m_Width, m_Height, "OpenGL", monitor, nullptr); if (!m_Window) { LOG_ERROR("GLFW: Failed to create window"); diff --git a/src/Renderer.h b/src/Renderer.h index 4f76f3a..9116b67 100755 --- a/src/Renderer.h +++ b/src/Renderer.h @@ -43,6 +43,17 @@ public: void UpdateCamera(int cameraIdentifier, glm::vec3 position, glm::quat orientation, float FOV, float nearClip, float farClip); #pragma region NEWSTUFF + void SetResolution(const Rectangle &resolution) + { + m_Width = resolution.Width; + m_Height = resolution.Height; + } + + void SetFullscreen(bool fullscreen) + { + m_Fullscreen = fullscreen; + } + void SetViewport(const Rectangle &viewport) { m_Viewport = viewport; @@ -99,6 +110,7 @@ public: private: std::shared_ptr<::ResourceManager> ResourceManager; + bool m_Fullscreen; int m_Width, m_Height; struct Viewport