summary refs log tree commit diff
path: root/src/GFX/Resources.cpp
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2024-02-12 12:55:11 +0100
committerMel <einebeere@gmail.com>2024-02-12 12:55:11 +0100
commitd2b5fc5b3bc648afffa42375706429685ac63794 (patch)
treea2dfbb241e1d46e5616c5884e5f3d685de2a2cb6 /src/GFX/Resources.cpp
parent588c7e87b7cab270698d43ca5c22d67793ae5fc4 (diff)
downloadmeowcraft-d2b5fc5b3bc648afffa42375706429685ac63794.tar.zst
meowcraft-d2b5fc5b3bc648afffa42375706429685ac63794.zip
Split rendering into own thread and sync through render action lists
Diffstat (limited to 'src/GFX/Resources.cpp')
-rw-r--r--src/GFX/Resources.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/GFX/Resources.cpp b/src/GFX/Resources.cpp
new file mode 100644
index 0000000..34ce32e
--- /dev/null
+++ b/src/GFX/Resources.cpp
@@ -0,0 +1,26 @@
+#include "Resources.hpp"
+
+#include "../Common/Assert.hpp"
+
+namespace MC::GFX {
+
+void Resources::initialize() {
+    ASSERT(!m_initialized, "Resources already initialized");
+    for (auto& metadata: m_program_metadata) {
+        m_programs[static_cast<USize>(metadata.id)] = create_program(metadata);
+    }
+    m_initialized = true;
+}
+
+Shading::Program const& Resources::program(Program id) const {
+    ASSERT(m_initialized, "Resources not initialized");
+    return m_programs[static_cast<USize>(id)];
+}
+
+Shading::Program Resources::create_program(ProgramMetadata const& metadata) {
+    Shading::Shader vertex(Shading::Shader::Type::Vertex, metadata.vertex);
+    Shading::Shader fragment(Shading::Shader::Type::Fragment, metadata.fragment);
+    return {vertex, fragment};
+}
+
+}