From 83c78e2b5cc9b0cb737ec3785722ae280bd29b65 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Fri, 14 Feb 2020 10:43:26 +0100 Subject: Use shader from file.. --- include/RenderBackend/OpenGL/DeviceMemory.hpp | 3 ++- include/RenderBackend/OpenGL/ShaderProgram.hpp | 7 ++++++- include/RenderBackend/OpenGL/Uniform.hpp | 29 ++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 include/RenderBackend/OpenGL/Uniform.hpp (limited to 'include/RenderBackend') diff --git a/include/RenderBackend/OpenGL/DeviceMemory.hpp b/include/RenderBackend/OpenGL/DeviceMemory.hpp index c9c8b23..3ccd0c9 100644 --- a/include/RenderBackend/OpenGL/DeviceMemory.hpp +++ b/include/RenderBackend/OpenGL/DeviceMemory.hpp @@ -2,7 +2,7 @@ #include "../../DataView.hpp" #include "../../utils.hpp" -#include "../../Triangle2D.hpp" +#include "../../Triangle.hpp" namespace amalgine { enum class DeviceMemoryType { @@ -37,6 +37,7 @@ namespace amalgine { ~DeviceMemory(); //void copy(const DataView &data, StorageType storageType, PrimitiveType primitiveType = PrimitiveType::TRIANGLE); void copy(const DataView &triangles, StorageType storageType); + void copy(const DataView &triangles, StorageType storageType); void draw(); DeviceMemoryType get_type() const { return type; } diff --git a/include/RenderBackend/OpenGL/ShaderProgram.hpp b/include/RenderBackend/OpenGL/ShaderProgram.hpp index ca96d0c..f1fea00 100644 --- a/include/RenderBackend/OpenGL/ShaderProgram.hpp +++ b/include/RenderBackend/OpenGL/ShaderProgram.hpp @@ -4,9 +4,13 @@ #include "../../types.hpp" #include "../../utils.hpp" #include "../../Vec.hpp" +#include "Uniform.hpp" #include "DeviceMemory.hpp" + #include #include +#include +#include namespace amalgine { class Shader; @@ -17,7 +21,8 @@ namespace amalgine { public: ~ShaderProgram(); static Result> build(const std::vector &shaders); - int set_uniform(const char *name, const vec3f &value); + + Result get_uniform_by_name(const char *name); int set_vertex_input(const char *name, const DeviceMemory &data); void use(); diff --git a/include/RenderBackend/OpenGL/Uniform.hpp b/include/RenderBackend/OpenGL/Uniform.hpp new file mode 100644 index 0000000..288c9b8 --- /dev/null +++ b/include/RenderBackend/OpenGL/Uniform.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include "../../Result.hpp" +#include "../../types.hpp" +#include "../../utils.hpp" +#include "../../Vec.hpp" + +#include + +namespace amalgine { + class Uniform { + DISABLE_COPY(Uniform) + friend class ShaderProgram; + friend class Result; + public: + Uniform(Uniform&&) = default; + ~Uniform(); + + void set(const vec3f &value); + void set(const glm::mat4 &value); + private: + Uniform(){} + Uniform(i32 uniform_id, u32 shader_program_id); + void use(); + private: + i32 uniform_id; + u32 program_id; + }; +} -- cgit v1.2.3