From ffe9dac56488ebfc9f5c37c4e400f4f5469a8a46 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Tue, 26 Dec 2017 17:29:28 +0100 Subject: Add device memory, device frame. Rendering works --- src/RenderBackend/OpenGL/ShaderProgram.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src/RenderBackend/OpenGL/ShaderProgram.cpp') 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; } -- cgit v1.2.3