diff options
| author | Mel <einebeere@gmail.com> | 2024-02-12 12:55:11 +0100 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2024-02-12 12:55:11 +0100 |
| commit | d2b5fc5b3bc648afffa42375706429685ac63794 (patch) | |
| tree | a2dfbb241e1d46e5616c5884e5f3d685de2a2cb6 /src/GFX/Resources.hpp | |
| parent | 588c7e87b7cab270698d43ca5c22d67793ae5fc4 (diff) | |
| download | meowcraft-d2b5fc5b3bc648afffa42375706429685ac63794.tar.zst meowcraft-d2b5fc5b3bc648afffa42375706429685ac63794.zip | |
Split rendering into own thread and sync through render action lists
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); +}; +} |
