aboutsummaryrefslogtreecommitdiff
path: root/src/RenderBackend/OpenGL/VertexShader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/RenderBackend/OpenGL/VertexShader.cpp')
-rw-r--r--src/RenderBackend/OpenGL/VertexShader.cpp23
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);
+ }
}