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/Shading/Program.cpp | 9 +++++++-- src/GFX/Shading/Program.hpp | 4 +++- src/GFX/Shading/Shader.hpp | 8 -------- 3 files changed, 10 insertions(+), 11 deletions(-) (limited to 'src/GFX/Shading') diff --git a/src/GFX/Shading/Program.cpp b/src/GFX/Shading/Program.cpp index ff10012..fe5d576 100644 --- a/src/GFX/Shading/Program.cpp +++ b/src/GFX/Shading/Program.cpp @@ -2,6 +2,8 @@ #include #include "Program.hpp" +#include "../../Common/Assert.hpp" + namespace MC::GFX::Shading { Program::Program(Shader vertex, Shader fragment) { @@ -26,6 +28,7 @@ Program::Program(Shader vertex, Shader fragment) { } void Program::bind() const { + ASSERT(m_program != 0, "Program is not initialized"); glUseProgram(m_program); } @@ -33,10 +36,12 @@ void Program::unbind() const { glUseProgram(0); } -Uniform Program::uniform(const std::string& name) const { +std::optional Program::uniform(const std::string& name) const { + ASSERT(m_program != 0, "Program is not initialized"); auto index = glGetUniformLocation(m_program, name.c_str()); - return {name, static_cast(index)}; + if (index == -1) return {}; + return {{name, static_cast(index)}}; } U32 Program::get() const { diff --git a/src/GFX/Shading/Program.hpp b/src/GFX/Shading/Program.hpp index 2f48698..67838dc 100644 --- a/src/GFX/Shading/Program.hpp +++ b/src/GFX/Shading/Program.hpp @@ -1,5 +1,6 @@ #pragma once +#include #include #include "Shader.hpp" #include "Uniform.hpp" @@ -8,11 +9,12 @@ namespace MC::GFX::Shading { class Program { public: + Program() : m_program(0) {} Program(Shader vertex, Shader fragment); U32 get() const; - Uniform uniform(const std::string& name) const; + std::optional uniform(std::string const& name) const; void bind() const; void unbind() const; diff --git a/src/GFX/Shading/Shader.hpp b/src/GFX/Shading/Shader.hpp index 21fd899..8c6c5c8 100644 --- a/src/GFX/Shading/Shader.hpp +++ b/src/GFX/Shading/Shader.hpp @@ -19,14 +19,6 @@ public: return m_shader; } - static Shader create_vertex() { - return {Type::Vertex, Assets::Shaders::vertex}; - } - - static Shader create_fragment() { - return {Type::Fragment, Assets::Shaders::fragment}; - } - private: U32 m_shader; }; -- cgit 1.4.1