diff options
Diffstat (limited to 'src/RenderBackend/OpenGL/ShaderProgram.cpp')
-rw-r--r-- | src/RenderBackend/OpenGL/ShaderProgram.cpp | 17 |
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; } |