summary refs log tree commit diff
path: root/src/GFX/Resources.cpp
blob: 34ce32e71eaee44834c76f9b52e262bd61d70075 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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};
}

}