因此,在我的项目中,我使用一个单独的类来创建名为 Buffer.cpp 的缓冲区。这是构造函数
#define GLEW_STATIC
#define GLEW_NO_GLU
#define GLFW_NO_GLU
#include "GL/glew.h"
#include "GL/glfw.h"
Buffer::Buffer(GLenum _type, const void *data, GLsizei _size, GLenum usage) : type(_type), size(_size)
{
...
//Generate Buffer
glGenBuffers(1, &buffer);
...
}
以及成员的定义:
GLuint buffer;
const GLsizei size;
const GLenum type;
Buffer(GLenum, const void*, GLsizei, GLenum);
问题是,当我尝试使用例如此命令生成缓冲区时:
Buffer vBuffer(GL_ARRAY_BUFFER, vertexPositions, sizeof(vertexPositions), GL_STATIC_DRAW);
程序在 glGenBuffers() 处崩溃,终止状态为“-1073741819”。我尝试调试程序,这就是我得到的:
Program received signal SIGSEGV, Segmentation fault.
我的卡支持 OpenGL 1.5,所以情况并非如此。
还值得注意的是,我自己编译了一个静态 glew 库。
编辑:我终于解决了这个问题。问题是我在创建 OpenGL 渲染上下文之前调用了 glewInit() 。