From ff4daae11db0ab811cac66e262d289a4107bba4a Mon Sep 17 00:00:00 2001 From: dec05eba Date: Wed, 27 Dec 2017 23:48:41 +0100 Subject: Add uniform (shader global variable) --- src/RenderBackend/OpenGL/ShaderProgram.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/RenderBackend/OpenGL/ShaderProgram.cpp') diff --git a/src/RenderBackend/OpenGL/ShaderProgram.cpp b/src/RenderBackend/OpenGL/ShaderProgram.cpp index 40f5b6c..aceda3b 100644 --- a/src/RenderBackend/OpenGL/ShaderProgram.cpp +++ b/src/RenderBackend/OpenGL/ShaderProgram.cpp @@ -12,6 +12,12 @@ namespace amalgine } + ShaderProgramNonExistingGlobalVariable::ShaderProgramNonExistingGlobalVariable(const char *variableName) : + runtime_error(string("There is no shader global variable with the name '") + variableName + "'") + { + + } + ShaderProgram::ShaderProgram() : built(false) { shaderProgramId = glCreateProgram(); @@ -84,4 +90,19 @@ namespace amalgine throw ShaderProgramUsedBeforeBuilt(); } } + + ShaderProgramGlobalVec3 ShaderProgram::getGlobalVec3(const char *name) + { + if(built) + { + GLint uniformId = glGetUniformLocation(shaderProgramId, name); + if(uniformId == -1) + throw ShaderProgramNonExistingGlobalVariable(name); + return ShaderProgramGlobalVec3(this, uniformId); + } + else + { + throw ShaderProgramUsedBeforeBuilt(); + } + } } -- cgit v1.2.3