diff options
Diffstat (limited to 'src/GFX/Resources.hpp')
| -rw-r--r-- | src/GFX/Resources.hpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/GFX/Resources.hpp b/src/GFX/Resources.hpp new file mode 100644 index 0000000..4206e33 --- /dev/null +++ b/src/GFX/Resources.hpp @@ -0,0 +1,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); +}; +} |
