aboutsummaryrefslogtreecommitdiff
path: root/src/RenderBackend/OpenGL/ShaderProgram.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2020-02-14 10:43:26 +0100
committerdec05eba <dec05eba@protonmail.com>2021-11-18 15:22:09 +0100
commit83c78e2b5cc9b0cb737ec3785722ae280bd29b65 (patch)
tree8c1f522bc19d4adc7df849fe09f8afc9513f9d65 /src/RenderBackend/OpenGL/ShaderProgram.cpp
parent23a37b2cdd8ffde8bb85a4159888bf3a7ec35966 (diff)
Use shader from file..
Diffstat (limited to 'src/RenderBackend/OpenGL/ShaderProgram.cpp')
-rw-r--r--src/RenderBackend/OpenGL/ShaderProgram.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/RenderBackend/OpenGL/ShaderProgram.cpp b/src/RenderBackend/OpenGL/ShaderProgram.cpp
index e613668..389a929 100644
--- a/src/RenderBackend/OpenGL/ShaderProgram.cpp
+++ b/src/RenderBackend/OpenGL/ShaderProgram.cpp
@@ -64,13 +64,13 @@ namespace amalgine {
return Result<std::unique_ptr<ShaderProgram>>::Ok(std::move(shader_program));
}
- int ShaderProgram::set_uniform(const char *name, const vec3f &value) {
- GLint uniformId = glGetUniformLocation(program_id, name);
- if(uniformId == -1)
- return -1;
- use();
- glUniform3f(uniformId, value.x, value.y, value.z);
- return 0;
+ Result<Uniform> ShaderProgram::get_uniform_by_name(const char *name) {
+ GLint uniform_id = glGetUniformLocation(program_id, name);
+ if(uniform_id == -1)
+ return Result<Uniform>::Err(std::string("Uniform with name ") + name + " was not found");
+
+ Uniform uniform(uniform_id, program_id);
+ return Result<Uniform>::Ok(std::move(uniform));
}
int ShaderProgram::set_vertex_input(const char *name, const DeviceMemory &data) {
@@ -88,7 +88,10 @@ namespace amalgine {
glVertexAttribPointer(attrib_location, 2, GL_FLOAT, GL_FALSE, 0, 0);
break;
}
- case DeviceMemoryType::VEC3: assert(false); return -1;
+ case DeviceMemoryType::VEC3: {
+ glVertexAttribPointer(attrib_location, 3, GL_FLOAT, GL_FALSE, 0, 0);
+ break;
+ }
}
glEnableVertexAttribArray(attrib_location);
return 0;