First iteration of GUI code. GUI is rendered on top of everything, world still separate.

This commit is contained in:
2015-09-22 14:39:08 +02:00
parent 0e6fcfb2ba
commit 1d500eb4f6
12 changed files with 855 additions and 54 deletions
+14 -9
View File
@@ -52,6 +52,8 @@
#include "Physics/CBoxShape.h"
#include "Physics/ESetImpulse.h"
#include "GUI/Frame.h"
#include "GUI/TextureFrame.h"
namespace dd
{
@@ -68,6 +70,16 @@ public:
m_Renderer->SetResolution(Rectangle(0, 0, 675, 1080));
m_Renderer->Initialize();
m_FrameStack = new GUI::Frame(m_EventBroker.get());
m_FrameStack->Width = 1920;
m_FrameStack->Height = 1080;
{
auto button = new GUI::TextureFrame(m_FrameStack, "SuperButt");
button->SetTexture("Textures/Test/TestBrick_Diffuse.png");
button->Width = 100;
button->Height = 25;
}
m_InputManager = std::make_shared<InputManager>(m_Renderer->Window(), m_EventBroker);
m_World = std::make_shared<World>(m_EventBroker);
@@ -250,13 +262,6 @@ public:
// if (glfwGetKey(m_Renderer->Window(), GLFW_KEY_R)) {
// ResourceManager::Reload("Shaders/Deferred/3/Fragment.glsl");
// }
//
//TODO Fill up the renderQueue with models (Temp fix)
// TEMPAddToRenderQueue();
// Render scene
//TODO send renderqueue to draw.
// m_Renderer->Draw(m_RendererQueue);
if (glfwGetKey(m_Renderer->Window(), GLFW_KEY_R)) {
ResourceManager::Reload("Shaders/Deferred/3/Fragment.glsl");
@@ -264,6 +269,7 @@ public:
//TODO Fill up the renderQueue with models (Temp fix)
TEMPAddToRenderQueue();
m_FrameStack->DrawLayered(m_RendererQueue);
// Render scene
//TODO send renderqueue to draw.
@@ -374,7 +380,6 @@ public:
job.EndIndex = texGroup.EndIndex;
job.ModelMatrix = modelMatrix;
job.Color = color;
job.fileName = fileName;
m_RendererQueue.Deferred.Add(job);
}
@@ -409,8 +414,8 @@ public:
}
private:
std::shared_ptr<ResourceManager> m_ResourceManager;
std::shared_ptr<EventBroker> m_EventBroker;
GUI::Frame* m_FrameStack = nullptr;
std::shared_ptr<Renderer> m_Renderer;
RenderQueueCollection m_RendererQueue;
std::shared_ptr<InputManager> m_InputManager;
+21 -4
View File
@@ -22,8 +22,9 @@
#include <cstdint>
#include <forward_list>
#include "Texture.h"
#include "Model.h"
#include "Core/Util/Rectangle.h"
#include "Core/Texture.h"
#include "Core/Model.h"
namespace dd
{
@@ -52,8 +53,8 @@ struct ModelJob : RenderJob
unsigned int ShaderID;
unsigned int TextureID;
std::string fileName;
glm::mat4 ProjectionMatrix;
glm::mat4 ViewMatrix;
glm::mat4 ModelMatrix;
GLuint DiffuseTexture;
GLuint NormalTexture;
@@ -90,6 +91,8 @@ struct SpriteJob : RenderJob
unsigned int ShaderID;
unsigned int TextureID;
glm::mat4 ProjectionMatrix;
glm::mat4 ViewMatrix;
glm::mat4 ModelMatrix;
GLuint DiffuseTexture;
GLuint NormalTexture;
@@ -115,6 +118,17 @@ struct PointLightJob : RenderJob
}
};
struct FrameJob : SpriteJob
{
Rectangle Scissor;
Rectangle Viewport;
void CalculateHash() override
{
Hash = 0;
}
};
class RenderQueue
{
public:
@@ -153,12 +167,14 @@ struct RenderQueueCollection
RenderQueue Deferred;
RenderQueue Forward;
RenderQueue Lights;
RenderQueue GUI;
void Clear()
{
Deferred.Clear();
Forward.Clear();
Lights.Clear();
GUI.Clear();
}
void Sort()
@@ -166,6 +182,7 @@ struct RenderQueueCollection
Deferred.Sort();
Forward.Sort();
Lights.Sort();
GUI.Sort();
}
};
+1
View File
@@ -101,6 +101,7 @@ private:
void DrawForward(RenderQueue &objects, RenderQueue &lights);
void DrawScene(RenderQueue &objects, ShaderProgram &program);
void DrawLightSpheres(RenderQueue &lights);
void DrawGUI(RenderQueue& rq);
void DebugKeys();
};
+2 -1
View File
@@ -66,7 +66,8 @@ struct Rectangle
Height = bottom - Y;
}
Rectangle& operator+=(const Rectangle &rhs) {
Rectangle& operator+=(const Rectangle &rhs)
{
SetLeft(std::min(Left(), rhs.Left()));
SetRight(std::max(Right(), rhs.Right()));
SetTop(std::min(Top(), rhs.Top()));