summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authortylermurphy534 <tylermurphy534@gmail.com>2022-09-19 07:08:42 -0400
committertylermurphy534 <tylermurphy534@gmail.com>2022-09-19 07:08:42 -0400
commit8754e31367f6fcfcda4bf50d373797a048dedf53 (patch)
tree432ff2e30fcfacf115d571ca27c4f7315c7ee873 /engine
parentLICENSE (diff)
downloadminecraftvulkan-8754e31367f6fcfcda4bf50d373797a048dedf53.tar.gz
minecraftvulkan-8754e31367f6fcfcda4bf50d373797a048dedf53.tar.bz2
minecraftvulkan-8754e31367f6fcfcda4bf50d373797a048dedf53.zip
start refactoring, doesnt compile
Diffstat (limited to 'engine')
-rw-r--r--engine/xe_engine.cpp17
-rw-r--r--engine/xe_engine.hpp40
-rw-r--r--engine/xe_renderer.cpp2
3 files changed, 59 insertions, 0 deletions
diff --git a/engine/xe_engine.cpp b/engine/xe_engine.cpp
new file mode 100644
index 0000000..8d2655a
--- /dev/null
+++ b/engine/xe_engine.cpp
@@ -0,0 +1,17 @@
+#include "xe_engine.hpp"
+#include "xe_descriptors.hpp"
+
+namespace xe {
+
+XeEngine::XeEngine(int width, int height, std::string name)
+ : xeWindow{width, height, name}, xeDevice{xeWindow}, xeRenderer{xeWindow, xeDevice} {};
+
+void XeEngine::loadDescriptorPool() {
+ xeDescriptorPool = XeDescriptorPool::Builder(xeDevice)
+ .setMaxSets(XeSwapChain::MAX_FRAMES_IN_FLIGHT)
+ .addPoolSize(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, XeSwapChain::MAX_FRAMES_IN_FLIGHT)
+ .addPoolSize(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, XeSwapChain::MAX_FRAMES_IN_FLIGHT)
+ .build();
+}
+
+} \ No newline at end of file
diff --git a/engine/xe_engine.hpp b/engine/xe_engine.hpp
new file mode 100644
index 0000000..93d3f8b
--- /dev/null
+++ b/engine/xe_engine.hpp
@@ -0,0 +1,40 @@
+#pragma once
+
+#include "xe_window.hpp"
+#include "xe_device.hpp"
+#include "xe_renderer.hpp"
+
+namespace xe {
+
+class XeEngine {
+
+ public:
+
+ XeEngine(int width, int height, std::string name);
+ ~XeEngine() {};
+
+ XeEngine(const XeEngine&) = delete;
+ XeEngine operator=(const XeEngine&) = delete;
+
+ const XeWindow& getWindow() const {
+ return xeWindow;
+ };
+
+ const XeRenderer& getRenderer() const {
+ return xeRenderer;
+ };
+
+
+ private:
+
+ void loadDescriptorPool();
+
+ XeWindow xeWindow;
+ XeDevice xeDevice;
+ XeRenderer xeRenderer;
+
+ std::unique_ptr<XeDescriptorPool> xeDescriptorPool{};
+ std::unique_ptr<xe::XeDescriptorSetLayout> xeDescriptorSetLayout;
+};
+
+} \ No newline at end of file
diff --git a/engine/xe_renderer.cpp b/engine/xe_renderer.cpp
index 2ed4f51..0c14cec 100644
--- a/engine/xe_renderer.cpp
+++ b/engine/xe_renderer.cpp
@@ -3,6 +3,7 @@
#include "xe_device.hpp"
#include "xe_game_object.hpp"
#include "xe_swap_chain.hpp"
+#include "xe_descriptors.hpp"
#include "xe_window.hpp"
#include <memory>
#include <vulkan/vulkan_core.h>
@@ -16,6 +17,7 @@ namespace xe {
XeRenderer::XeRenderer(XeWindow& window, XeDevice& device) : xeWindow{window}, xeDevice{device} {
recreateSwapChain();
createCommandBuffers();
+ loadDescriptorPool();
}
XeRenderer::~XeRenderer() { freeCommandBuffers(); }