diff options
Diffstat (limited to 'src/RenderBackend/OpenGL/VertexShader.cpp')
-rw-r--r-- | src/RenderBackend/OpenGL/VertexShader.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/RenderBackend/OpenGL/VertexShader.cpp b/src/RenderBackend/OpenGL/VertexShader.cpp index 04bf863..1505ff4 100644 --- a/src/RenderBackend/OpenGL/VertexShader.cpp +++ b/src/RenderBackend/OpenGL/VertexShader.cpp @@ -1,6 +1,7 @@ #include "../../../include/RenderBackend/OpenGL/VertexShader.hpp" #include "../../../include/RenderBackend/OpenGL/CommonShader.hpp" #include "../../../include/RenderBackend/OpenGL/opengl.hpp" +#include "../../../include/RenderBackend/OpenGL/CompiledShader.hpp" using namespace std; @@ -106,4 +107,26 @@ namespace amalgine { body += code; } + + Result<CompiledVertexShader*> VertexShader::compile() + { + GLuint vertexShaderId = glCreateShader(GL_VERTEX_SHADER); + string verterShaderSource = build(); + const char *verterShaderSourcePtr = verterShaderSource.c_str(); + printf("Vertex shader:\n%s\n", verterShaderSourcePtr); + glShaderSource(vertexShaderId, 1, &verterShaderSourcePtr, NULL); + glCompileShader(vertexShaderId); + + GLint status; + glGetShaderiv(vertexShaderId, GL_COMPILE_STATUS, &status); + string compileLog = getShaderCompileLog((u32)vertexShaderId); + if(status == GL_TRUE) + { + if(!compileLog.empty()) + printf("Vertex shader compile log:\n%s", compileLog.c_str()); + return Result<CompiledVertexShader*>::Ok(new CompiledVertexShader(vertexShaderId)); + } + else + return Result<CompiledVertexShader*>::Err(compileLog); + } } |