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
27
28
29
30
31
32
33
34
35
36
37
38
|
#pragma once
#include <array>
#include "Shading/Program.hpp"
namespace MC::GFX {
class Resources {
public:
enum class Program: USize {
Terrain,
Clouds,
ImageViewer,
BlockOutline,
};
constexpr static USize ProgramCount = 4;
void initialize();
Shading::Program const& program(Program id) const;
private:
struct ProgramMetadata {
Program id;
Char const* vertex;
Char const* fragment;
};
static inline std::array<ProgramMetadata, ProgramCount> const m_program_metadata = {{
{Program::Terrain, Assets::Shaders::terrain::vertex, Assets::Shaders::terrain::fragment},
{Program::Clouds, Assets::Shaders::clouds::vertex, Assets::Shaders::clouds::fragment},
{Program::ImageViewer, Assets::Shaders::image_viewer::vertex, Assets::Shaders::image_viewer::fragment},
{Program::BlockOutline, Assets::Shaders::block_outline::vertex, Assets::Shaders::block_outline::fragment},
}};
Bool m_initialized = false;
std::array<Shading::Program, ProgramCount> m_programs = {};
static Shading::Program create_program(ProgramMetadata const& metadata);
};
}
|