summary refs log tree commit diff
path: root/src/GFX/Resources.cpp
diff options
context:
space:
mode:
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};
+}
+
+}