aboutsummaryrefslogtreecommitdiff
path: root/src/RenderBackend/OpenGL/ShaderProgram.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2017-12-26 17:29:28 +0100
committerdec05eba <dec05eba@protonmail.com>2021-11-18 15:21:48 +0100
commitffe9dac56488ebfc9f5c37c4e400f4f5469a8a46 (patch)
tree5958b66f16d217e31215d2f6ec56bb341ec06a76 /src/RenderBackend/OpenGL/ShaderProgram.cpp
parentb5f06b6c4cd07f3073897af32626b9b21a4d2ef8 (diff)
Add device memory, device frame. Rendering works
Diffstat (limited to 'src/RenderBackend/OpenGL/ShaderProgram.cpp')
-rw-r--r--src/RenderBackend/OpenGL/ShaderProgram.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/RenderBackend/OpenGL/ShaderProgram.cpp b/src/RenderBackend/OpenGL/ShaderProgram.cpp
index f76903e..40f5b6c 100644
--- a/src/RenderBackend/OpenGL/ShaderProgram.cpp
+++ b/src/RenderBackend/OpenGL/ShaderProgram.cpp
@@ -36,17 +36,30 @@ namespace amalgine
// TODO: Before adding shader to program, check if it has already been added
- bool ShaderProgram::addVertexShader(CompiledVertexShader *vertexShader)
+ bool ShaderProgram::setVertexShader(CompiledVertexShader *vertexShader)
{
+ if(!vertexShader) return false;
+
// TODO: Do not allow adding shader if the program has already been built
glAttachShader(shaderProgramId, vertexShader->getShaderId());
return true;
}
- bool ShaderProgram::addPixelShader(CompiledPixelShader *pixelShader)
+ bool ShaderProgram::setPixelShader(CompiledPixelShader *pixelShader)
{
+ if(!pixelShader) return false;
+
// TODO: Do not allow adding shader if the program has already been built
glAttachShader(shaderProgramId, pixelShader->getShaderId());
+
+ const auto &pixelAttributes = pixelShader->getPixelAttributes();
+ for(const auto &pixelAttribute : pixelAttributes)
+ {
+ const string &attributeName = pixelAttribute.first;
+ i32 attributeLocation = pixelAttribute.second;
+ glBindFragDataLocation(shaderProgramId, attributeLocation, attributeName.c_str());
+ }
+
return true;
}