Skip to content

Commit 01f7ded

Browse files
authored
Merge pull request #42 from CapsCollective/feature/window-target
Split out window and input into its own module
2 parents 9e63f60 + 22d52df commit 01f7ded

File tree

28 files changed

+919
-436
lines changed

28 files changed

+919
-436
lines changed

Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ export examplesDir := $(abspath examples)
4242

4343
# Set top level targets
4444
export utilsLib := $(libDir)/libutils.a
45+
export windowLib := $(libDir)/libwindow.a
4546
export coreLib := $(libDir)/libcore.a
4647
export renderLib := $(libDir)/librender.a
4748
export testApp := $(binDir)/tests/build/app
@@ -60,10 +61,13 @@ all: testapp package-gameapp package-renderapp
6061
$(utilsLib): buildFlags
6162
"$(MAKE)" -C $(engineDir)/utils CXXFLAGS="$(CXXFLAGS)"
6263

64+
$(windowLib): buildFlags $(utilsLib)
65+
"$(MAKE)" -C $(engineDir)/window CXXFLAGS="$(CXXFLAGS)"
66+
6367
$(coreLib): buildFlags $(utilsLib)
6468
"$(MAKE)" -C $(engineDir)/core CXXFLAGS="$(CXXFLAGS)"
6569

66-
$(renderLib): buildFlags $(utilsLib)
70+
$(renderLib): buildFlags $(utilsLib) $(windowLib)
6771
"$(MAKE)" -C $(engineDir)/render CXXFLAGS="$(CXXFLAGS)"
6872

6973
$(testApp): buildFlags $(utilsLib) $(coreLib)

engine/render/Makefile

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,15 @@ renderSources := $(call rwildcard,$(renderSrcDir)/,*.cpp)
1414
renderObjects := $(call findobjs,$(renderSrcDir),$(renderBinDir),$(renderSources))
1515
renderDepends := $(patsubst %.o, %.d, $(call rwildcard,$(renderBinDir)/,*.o))
1616
renderBuildDir := $(renderBinDir)/build
17-
renderLibs := $(vendorDir)/glfw/build/src/libglfw3.a $(vendorDir)/zlib/build/lib/libz.a \
18-
$(vendorDir)/libpng/build/libpng.a $(vendorDir)/freetype/build/libfreetype.a
17+
renderLibs := $(vendorDir)/zlib/build/lib/libz.a $(vendorDir)/libpng/build/libpng.a $(vendorDir)/freetype/build/libfreetype.a
1918

2019
# Set shader build vars
2120
vertSources := $(call rwildcard,assets/shaders,*.vert)
2221
fragSources := $(call rwildcard,assets/shaders,*.frag)
2322
vertObjects := $(patsubst %.vert,$(renderBuildDir)/%.vert.spv,$(vertSources))
2423
fragObjects := $(patsubst %.frag,$(renderBuildDir)/%.frag.spv,$(fragSources))
2524

26-
linkFlags += -l utils
25+
linkFlags += -l utils -l window
2726

2827
compileFlags += -I $(vendorDir)/vulkan/include -I $(vendorDir)/glfw/include -I $(vendorDir)/glm \
2928
-I $(vendorDir)/tinyobjloader -I $(vendorDir)/stb_image -I $(vendorDir)/zlib/build/include \

engine/render/input/Input.cpp

Lines changed: 0 additions & 86 deletions
This file was deleted.

engine/render/input/Input.h

Lines changed: 0 additions & 60 deletions
This file was deleted.

engine/render/renderer/Renderer.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,9 @@ Renderer::Renderer(Window& window) : window {window}
2626

2727
if (instance == nullptr) instance = this;
2828

29-
auto extent = window.GetExtent();
29+
auto extent = window.GetExtents();
3030

31-
context.Init({extent.width, extent.height},
32-
Window::GetRequiredExtensions,
33-
Window::CreateWindowSurface);
31+
context.Init(window);
3432

3533
DescriptorPool::AddPoolSize(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1024);
3634
DescriptorPool::AddPoolSize(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, 1024);
@@ -63,11 +61,11 @@ void Renderer::DrawFrame()
6361
void Renderer::RecreateSwapChain()
6462
{
6563
ClearDeviceQueue();
66-
auto extent = window.GetExtent();
64+
auto extent = window.GetExtents();
6765

6866
while (!window.IsVisible() || extent.width == 0.0 || extent.height == 0.0)
6967
{
70-
extent = window.GetExtent();
68+
extent = window.GetExtents();
7169
window.WaitEvents();
7270
}
7371

@@ -123,7 +121,7 @@ void Renderer::DrawQuad(const Vec2 position,
123121
renderer2D.DrawQuad(position, scale, colour, rotation, zIndex, texture);
124122
}
125123

126-
void Renderer::DrawText2D(const char* const text,
124+
void Renderer::DrawText2D(const char* text,
127125
Vulkan::Font& font,
128126
const Vec2 position,
129127
const Vec2 scale,

engine/render/renderer/Renderer.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
#define SIEGE_ENGINE_RENDERER_H
1111

1212
#include <utils/Logging.h>
13+
#include <window/Window.h>
1314

1415
#include "descriptor/DescriptorPool.h"
1516
#include "lights/PointLight.h"
1617
#include "model/Model.h"
1718
#include "render/renderer/platform/vulkan/CommandBuffer.h"
1819
#include "render/renderer/platform/vulkan/Context.h"
19-
#include "render/window/Window.h"
2020
#include "renderer/Renderer2D.h"
2121
#include "renderer/Renderer3D.h"
2222

@@ -64,7 +64,7 @@ class Renderer
6464
float rotation = 0.f,
6565
const uint8_t zIndex = 0,
6666
Vulkan::Texture2D* texture = nullptr);
67-
void DrawText2D(const char* const text,
67+
void DrawText2D(const char* text,
6868
Vulkan::Font& font,
6969
const Vec2 position,
7070
const Vec2 scale,

engine/render/renderer/platform/vulkan/Context.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#include "Context.h"
1111

12+
#include <GLFW/glfw3.h>
1213
#include <utils/Logging.h>
1314

1415
#include "render/renderer/Renderer.h"
@@ -23,22 +24,24 @@ Context::~Context()
2324
vulkanInstance.~Instance();
2425
}
2526

26-
void Context::Init(const Utils::Extent2D& extent,
27-
Instance::GetSurfaceExtensionsCallback surfaceExtensionsCallback,
28-
GetWindowSurfaceCallBack windowSurfaceCallback)
27+
void Context::Init(Window& window)
2928
{
3029
CC_ASSERT(volkInitialize() == VK_SUCCESS, "Unable to initialise Volk!")
3130

32-
vulkanInstance = Instance(surfaceExtensionsCallback);
31+
vulkanInstance = Instance(window.GetRequiredExtensions());
32+
glfwCreateWindowSurface(vulkanInstance.GetInstance(),
33+
reinterpret_cast<GLFWwindow*>(window.GetRawWindow()),
34+
nullptr,
35+
&surface);
3336

34-
CC_ASSERT(windowSurfaceCallback(vulkanInstance.GetInstance(), &surface),
35-
"Unable to create window surface!")
37+
CC_ASSERT(surface != VK_NULL_HANDLE, "Unable to create surface!")
3638

3739
physicalDevice = PhysicalDevice(surface, vulkanInstance);
3840

3941
logicalDevice = LogicalDevice(surface, physicalDevice);
4042

41-
swapchain = Swapchain(extent);
43+
auto extents = window.GetExtents();
44+
swapchain = Swapchain({extents.width, extents.height});
4245
}
4346

4447
Context& Context::Get()

engine/render/renderer/platform/vulkan/Context.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,18 @@
1313
#include "LogicalDevice.h"
1414
#include "PhysicalDevice.h"
1515
#include "Swapchain.h"
16+
#include "window/Window.h"
1617

1718
namespace Siege::Vulkan
1819
{
1920
class Context
2021
{
2122
public:
2223

23-
typedef bool (*getSurfaceCallback)(VkInstance, Surface*);
24-
typedef getSurfaceCallback GetWindowSurfaceCallBack;
25-
2624
Context() = default;
2725
~Context();
2826

29-
void Init(const Utils::Extent2D& extent,
30-
Instance::GetSurfaceExtensionsCallback surfaceExtensionsCallback,
31-
GetWindowSurfaceCallBack windowSurfaceCallback);
27+
void Init(Window& window);
3228

3329
static Context& Get();
3430

engine/render/renderer/platform/vulkan/Instance.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@
6464

6565
namespace Siege::Vulkan
6666
{
67-
Instance::Instance(GetSurfaceExtensionsCallback surfaceExtensionsCallback)
67+
Instance::Instance(MHArray<const char*> surfaceExtensions)
6868
{
69-
CreateInstance(surfaceExtensionsCallback());
69+
CreateInstance(surfaceExtensions);
7070

7171
SETUP_UTILS_MESSENGER
7272
}

engine/render/renderer/platform/vulkan/Instance.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,8 @@ class Instance
1919
{
2020
public:
2121

22-
typedef Siege::MHArray<const char*> (*surfaceCallback)(void);
23-
typedef surfaceCallback GetSurfaceExtensionsCallback;
24-
2522
Instance() = default;
26-
Instance(GetSurfaceExtensionsCallback surfaceExtensionsCallback);
23+
Instance(MHArray<const char*> surfaceExtensions);
2724
Instance(Instance&& other);
2825
~Instance();
2926

0 commit comments

Comments
 (0)