Implementing basic scene tree
This commit is contained in:
@@ -1,21 +1,27 @@
|
||||
target_sources(SeeleEngine
|
||||
PRIVATE
|
||||
ForwardPlusRenderPath.h
|
||||
ForwardPlusRenderPath.cpp
|
||||
GraphicsResources.h
|
||||
GraphicsResources.cpp
|
||||
GraphicsEnums.h
|
||||
Graphics.h
|
||||
Graphics.cpp
|
||||
Mesh.h
|
||||
Mesh.cpp
|
||||
RenderCore.h
|
||||
RenderCore.cpp
|
||||
RenderPath.h
|
||||
RenderPath.cpp
|
||||
SceneView.h
|
||||
SceneView.cpp
|
||||
SceneRenderPath.h
|
||||
SceneRenderPath.cpp
|
||||
View.h
|
||||
View.cpp
|
||||
SceneView.h
|
||||
SceneView.cpp
|
||||
Window.cpp
|
||||
Window.h
|
||||
WindowManager.h
|
||||
WindowManager.cpp
|
||||
GraphicsResources.h
|
||||
GraphicsResources.cpp
|
||||
GraphicsEnums.h)
|
||||
WindowManager.cpp)
|
||||
|
||||
add_subdirectory(Vulkan/)
|
||||
@@ -0,0 +1,24 @@
|
||||
#include "ForwardPlusRenderPath.h"
|
||||
|
||||
using namespace Seele;
|
||||
|
||||
Seele::ForwardPlusRenderPath::ForwardPlusRenderPath(Gfx::PGraphics graphics, Gfx::PViewport viewport)
|
||||
: SceneRenderPath(graphics, viewport)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Seele::ForwardPlusRenderPath::~ForwardPlusRenderPath()
|
||||
{}
|
||||
|
||||
void Seele::ForwardPlusRenderPath::beginFrame()
|
||||
{
|
||||
}
|
||||
|
||||
void Seele::ForwardPlusRenderPath::render()
|
||||
{
|
||||
}
|
||||
|
||||
void Seele::ForwardPlusRenderPath::endFrame()
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
#pragma once
|
||||
#include "SceneRenderPath.h"
|
||||
|
||||
namespace Seele
|
||||
{
|
||||
class ForwardPlusRenderPath : public SceneRenderPath
|
||||
{
|
||||
public:
|
||||
ForwardPlusRenderPath(Gfx::PGraphics graphics, Gfx::PViewport target);
|
||||
virtual ~ForwardPlusRenderPath();
|
||||
virtual void beginFrame() override;
|
||||
virtual void render() override;
|
||||
virtual void endFrame() override;
|
||||
private:
|
||||
};
|
||||
}
|
||||
@@ -283,7 +283,8 @@ class Viewport
|
||||
public:
|
||||
Viewport(PWindow owner, const ViewportCreateInfo &createInfo);
|
||||
virtual ~Viewport();
|
||||
|
||||
virtual void resize(uint32 newX, uint32 newY) = 0;
|
||||
virtual void move(uint32 newOffsetX, uint32 newOffsetY) = 0;
|
||||
protected:
|
||||
uint32 sizeX;
|
||||
uint32 sizeY;
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
#include "Mesh.h"
|
||||
@@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
#include "GraphicsResources.h"
|
||||
|
||||
namespace Seele
|
||||
{
|
||||
class Mesh
|
||||
{
|
||||
public:
|
||||
Mesh(Gfx::PVertexBuffer vertexBuffer, Gfx::PIndexBuffer indexBuffer);
|
||||
~Mesh();
|
||||
private:
|
||||
Gfx::VertexBuffer vertexBuffer;
|
||||
Gfx::IndexBuffer indexBuffer;
|
||||
};
|
||||
}
|
||||
@@ -1,10 +1,17 @@
|
||||
#include "RenderPath.h"
|
||||
|
||||
Seele::RenderPath::RenderPath(Gfx::PGraphics graphics)
|
||||
Seele::RenderPath::RenderPath(Gfx::PGraphics graphics, Gfx::PViewport target)
|
||||
: graphics(graphics)
|
||||
, target(target)
|
||||
{
|
||||
}
|
||||
|
||||
Seele::RenderPath::~RenderPath()
|
||||
{
|
||||
}
|
||||
|
||||
void Seele::RenderPath::applyArea(Rect newArea)
|
||||
{
|
||||
target->resize(newArea.size.x, newArea.size.y);
|
||||
target->move(newArea.offset.x, newArea.offset.y);
|
||||
}
|
||||
@@ -6,17 +6,15 @@ namespace Seele
|
||||
class RenderPath
|
||||
{
|
||||
public:
|
||||
RenderPath(Gfx::PGraphics graphics);
|
||||
RenderPath(Gfx::PGraphics graphics, Gfx::PViewport target);
|
||||
virtual ~RenderPath();
|
||||
virtual void applyArea(Rect area) = 0;
|
||||
virtual void init() = 0;
|
||||
virtual void applyArea(Rect area);
|
||||
virtual void beginFrame() = 0;
|
||||
virtual void render() = 0;
|
||||
virtual void endFrame() = 0;
|
||||
|
||||
protected:
|
||||
Gfx::PGraphics graphics;
|
||||
Rect area;
|
||||
Gfx::PViewport target;
|
||||
};
|
||||
DEFINE_REF(RenderPath);
|
||||
} // namespace Seele
|
||||
@@ -1,31 +1,10 @@
|
||||
#include "SceneRenderPath.h"
|
||||
|
||||
Seele::SceneRenderPath::SceneRenderPath(Gfx::PGraphics graphics)
|
||||
: RenderPath(graphics)
|
||||
Seele::SceneRenderPath::SceneRenderPath(Gfx::PGraphics graphics, Gfx::PViewport target)
|
||||
: RenderPath(graphics, target)
|
||||
{
|
||||
}
|
||||
|
||||
Seele::SceneRenderPath::~SceneRenderPath()
|
||||
{
|
||||
}
|
||||
|
||||
void Seele::SceneRenderPath::applyArea(Rect newArea)
|
||||
{
|
||||
area = newArea;
|
||||
}
|
||||
|
||||
void Seele::SceneRenderPath::init()
|
||||
{
|
||||
}
|
||||
|
||||
void Seele::SceneRenderPath::beginFrame()
|
||||
{
|
||||
}
|
||||
|
||||
void Seele::SceneRenderPath::render()
|
||||
{
|
||||
}
|
||||
|
||||
void Seele::SceneRenderPath::endFrame()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -6,12 +6,10 @@ namespace Seele
|
||||
class SceneRenderPath : public RenderPath
|
||||
{
|
||||
public:
|
||||
SceneRenderPath(Gfx::PGraphics graphics);
|
||||
SceneRenderPath(Gfx::PGraphics graphics, Gfx::PViewport target);
|
||||
virtual ~SceneRenderPath();
|
||||
virtual void applyArea(Rect area) override;
|
||||
virtual void init() override;
|
||||
virtual void beginFrame() override;
|
||||
virtual void render() override;
|
||||
virtual void endFrame() override;
|
||||
virtual void beginFrame() = 0;
|
||||
virtual void render() = 0;
|
||||
virtual void endFrame() = 0;
|
||||
};
|
||||
} // namespace Seele
|
||||
@@ -1,10 +1,10 @@
|
||||
#include "SceneView.h"
|
||||
#include "SceneRenderPath.h"
|
||||
#include "ForwardPlusRenderPath.h"
|
||||
|
||||
Seele::SceneView::SceneView(Gfx::PGraphics graphics)
|
||||
: View(graphics)
|
||||
Seele::SceneView::SceneView(Gfx::PGraphics graphics, PWindow owner, const ViewportCreateInfo& createInfo)
|
||||
: View(graphics, owner, createInfo)
|
||||
{
|
||||
renderer = new SceneRenderPath(graphics);
|
||||
renderer = new ForwardPlusRenderPath(graphics, viewport);
|
||||
}
|
||||
|
||||
Seele::SceneView::~SceneView()
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace Seele
|
||||
class SceneView : public View
|
||||
{
|
||||
public:
|
||||
SceneView(Gfx::PGraphics graphics);
|
||||
SceneView(Gfx::PGraphics graphics, PWindow owner, const ViewportCreateInfo& createInfo);
|
||||
~SceneView();
|
||||
};
|
||||
} // namespace Seele
|
||||
@@ -1,8 +1,11 @@
|
||||
#include "View.h"
|
||||
#include "Window.h"
|
||||
|
||||
Seele::View::View(Gfx::PGraphics graphics)
|
||||
Seele::View::View(Gfx::PGraphics graphics, PWindow window, const ViewportCreateInfo& viewportInfo)
|
||||
: graphics(graphics)
|
||||
, owner(owner)
|
||||
{
|
||||
viewport = graphics->createViewport(owner->getGfxHandle(), viewportInfo);
|
||||
}
|
||||
|
||||
Seele::View::~View()
|
||||
@@ -14,6 +17,11 @@ void Seele::View::beginFrame()
|
||||
renderer->beginFrame();
|
||||
}
|
||||
|
||||
void Seele::View::render()
|
||||
{
|
||||
renderer->render();
|
||||
}
|
||||
|
||||
void Seele::View::endFrame()
|
||||
{
|
||||
renderer->endFrame();
|
||||
|
||||
@@ -2,18 +2,22 @@
|
||||
#include "RenderPath.h"
|
||||
namespace Seele
|
||||
{
|
||||
DECLARE_REF(Window);
|
||||
// A view is a part of the window, which can be anything from a viewport to an editor
|
||||
class View
|
||||
{
|
||||
public:
|
||||
View(Gfx::PGraphics graphics);
|
||||
View(Gfx::PGraphics graphics, PWindow window, const ViewportCreateInfo& createInfo);
|
||||
virtual ~View();
|
||||
void beginFrame();
|
||||
void render();
|
||||
void endFrame();
|
||||
void applyArea(Rect area);
|
||||
|
||||
protected:
|
||||
Gfx::PGraphics graphics;
|
||||
Gfx::PViewport viewport;
|
||||
PWindow owner;
|
||||
PRenderPath renderer;
|
||||
};
|
||||
|
||||
|
||||
@@ -332,7 +332,8 @@ class Viewport : public Gfx::Viewport
|
||||
public:
|
||||
Viewport(PGraphics graphics, PWindow owner, const ViewportCreateInfo &createInfo);
|
||||
virtual ~Viewport();
|
||||
|
||||
virtual void resize(uint32 newX, uint32 newY);
|
||||
virtual void move(uint32 newOffsetX, uint32 newOffsetY);
|
||||
protected:
|
||||
private:
|
||||
PGraphics graphics;
|
||||
|
||||
@@ -241,3 +241,15 @@ Viewport::Viewport(PGraphics graphics, PWindow owner, const ViewportCreateInfo &
|
||||
Viewport::~Viewport()
|
||||
{
|
||||
}
|
||||
|
||||
void Viewport::resize(uint32 newX, uint32 newY)
|
||||
{
|
||||
sizeX = newX;
|
||||
sizeY = newY;
|
||||
}
|
||||
|
||||
void Viewport::move(uint32 newOffsetX, uint32 newOffsetY)
|
||||
{
|
||||
offsetX = newOffsetX;
|
||||
offsetY = newOffsetY;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
#include "Window.h"
|
||||
|
||||
Seele::Window::Window(Gfx::PWindow handle)
|
||||
: gfxHandle(handle)
|
||||
{
|
||||
}
|
||||
|
||||
Seele::Window::~Window()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Seele::Window::addView(PView view)
|
||||
{
|
||||
viewports.add(view);
|
||||
}
|
||||
|
||||
void Seele::Window::beginFrame()
|
||||
{
|
||||
gfxHandle->beginFrame();
|
||||
for(auto view : viewports)
|
||||
{
|
||||
view->beginFrame();
|
||||
}
|
||||
}
|
||||
|
||||
void Seele::Window::render()
|
||||
{
|
||||
for(auto view : viewports)
|
||||
{
|
||||
view->render();
|
||||
}
|
||||
}
|
||||
|
||||
void Seele::Window::endFrame()
|
||||
{
|
||||
gfxHandle->endFrame();
|
||||
for(auto view : viewports)
|
||||
{
|
||||
view->endFrame();
|
||||
}
|
||||
}
|
||||
|
||||
Gfx::PWindow Seele::Window::getGfxHandle()
|
||||
{
|
||||
return gfxHandle;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
#pragma once
|
||||
#include "GraphicsResources.h"
|
||||
#include "View.h"
|
||||
|
||||
namespace Seele
|
||||
{
|
||||
// The logical window, with the graphics proxy
|
||||
class Window
|
||||
{
|
||||
public:
|
||||
Window(Gfx::PWindow handle);
|
||||
~Window();
|
||||
void addView(PView view);
|
||||
void beginFrame();
|
||||
void render();
|
||||
void endFrame();
|
||||
Gfx::PWindow getGfxHandle();
|
||||
private:
|
||||
Array<PView> viewports;
|
||||
Gfx::PWindow gfxHandle;
|
||||
};
|
||||
DEFINE_REF(Window);
|
||||
}
|
||||
Reference in New Issue
Block a user