Shader のコンパイルエラーを取得
OGLplus で Shader のコンパイルに失敗した場合、Comple() 時に例外(CompileError)が飛んできます。
[ソース]
#include <vector> #include <iostream> #define GL_VERSION_4_1 1 #include <GL/glew.h> #include <oglplus/gl.hpp> #include <oglplus/context.hpp> #include <oglplus/shader.hpp> #include <GL/Glut.h> int main(int argc, char *argv[]){ namespace glp = oglplus; typedef glp::Context glc; // Shader を使うために初期化 glutCreateWindow(""); auto err = glewInit(); if (err != GLEW_OK) { std::cout << "Error:" << glewGetErrorString(err) << std::endl; } glp::VertexShader vs; vs.Source(R"delimiter( #version 330 in vec3 Position void main(void){ gl_Position = vec4(Position, 1.0); } )delimiter"); try{ // Shader Compile vs.Compile(); std::cout << "SUCCESS" << std::endl; } catch(glp::CompileError const& error){ std::cout << error.Log() << std::endl; } return 0; }
[出力]
0(4) : error C0000: syntax error, unexpected reserved word "void", expecting ',' or ';' at token "void"
CompileError::Log で、コンパイルエラー内容を取得することが出来ます。
[OGLplus]
- 0.6.0