From d2b5fc5b3bc648afffa42375706429685ac63794 Mon Sep 17 00:00:00 2001 From: Mel Date: Mon, 12 Feb 2024 12:55:11 +0100 Subject: Split rendering into own thread and sync through render action lists --- src/GFX/Resources.hpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/GFX/Resources.hpp (limited to 'src/GFX/Resources.hpp') 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 +#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 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 m_programs = {}; + + static Shading::Program create_program(ProgramMetadata const& metadata); +}; +} -- cgit 1.4.1