From dcdff7828e1dc3b5cbfc10a30ee10c2ffec07987 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 12 Dec 2021 15:33:09 +0000 Subject: Move GL shared source into it's own class/file --- gfx/gl/glSource.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 gfx/gl/glSource.cpp (limited to 'gfx/gl/glSource.cpp') diff --git a/gfx/gl/glSource.cpp b/gfx/gl/glSource.cpp new file mode 100644 index 0000000..13686ae --- /dev/null +++ b/gfx/gl/glSource.cpp @@ -0,0 +1,38 @@ +#include "glSource.h" +#include + +GLsource::ShaderRef +GLsource::compile() const +{ + ShaderRef id {type}; + glShaderSource(id, 1, &text, &len); + glCompileShader(id); + + CheckShaderError(id, GL_COMPILE_STATUS, false, "Error compiling shader!"); + return id; +} + +void +GLsource::CheckShaderError(GLuint shader, GLuint flag, bool isProgram, std::string_view errorMessage) +{ + GLint success = 0; + std::array error {}; + + if (isProgram) { + glGetProgramiv(shader, flag, &success); + } + else { + glGetShaderiv(shader, flag, &success); + } + + if (success == GL_FALSE) { + if (isProgram) { + glGetProgramInfoLog(shader, error.size(), nullptr, error.data()); + } + else { + glGetShaderInfoLog(shader, error.size(), nullptr, error.data()); + } + + throw std::runtime_error {std::string {errorMessage} + ": '" + std::string {error.data(), error.size()} + "'"}; + } +} -- cgit v1.2.3