声明重要的oglplus对象会抛出异常oglplus :: MissingFunction

时间:2016-07-26 05:17:55

标签: c++ opengl exception graphics oglplus

我想使用OpenGL和C ++ OpenGL包装器库oglplus创建C ++程序,但我无法使用oglplus运行程序,因为当我声明某些oglplus对象时,总是抛出oglplus :: MissingFunction异常。

我的操作系统是archlinux。

我的程序编译但不运行。例如:

#include <cassert>
#include <iostream>

#include <GL/glew.h>
#include <GL/glut.h>

#include <oglplus/all.hpp>

int main()
{
    oglplus::VertexShader vs;   
    return 0;
}

这个程序编译,但是当我运行它时,会抛出异常oglplus :: MissingFunction。

由于我的程序编译,我相信这意味着我已经安装了必要的软件包并且链接了正确的库。我只是不明白为什么抛出异常。异常的描述表明抛出它的意思是指用于调用OpenGL函数的一些指针未初始化。

到目前为止,我发现当我声明类型的对象时会抛出oglplus :: MissingFunction:

  • oglplus :: VertexShader
  • oglplus :: FragmentShader
  • oglplus ::方案
  • oglplus ::方案
  • oglplus :: VertexArray
  • oglplus ::缓冲

有关如何解决此问题的任何建议吗?

1 个答案:

答案 0 :(得分:2)

在使用任何OpenGL资源之前,您需要创建一个OpenGL上下文。此示例显示如何使用GLUT设置上下文:

https://github.com/matus-chochlik/oglplus/blob/develop/example/standalone/001_hello_glut_glew.cpp

基本上,你需要这个部分:

#include <iostream>

#include <GL/glew.h>
#include <GL/glut.h>

#include <oglplus/all.hpp>

int main(int argc, char* argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);

    GLint width = 800;
    GLint height = 150;

    glutInitWindowSize(width, height);
    glutInitWindowPosition(100,100);
    glutCreateWindow("OGLplus+GLUT+GLEW");

    if(glewInit() == GLEW_OK) try
    {
        // Your code goes here.

        return 0;
    }
    catch(oglplus::Error& err)
    {
        std::cerr << "OGLPlus error." << std::endl;
    }

    return 1;
}