我想使用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:
有关如何解决此问题的任何建议吗?
答案 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;
}