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