glGenBuffers和Macbook Air中的许多OpenGL功能EXC_BAD_ACCESS

时间:2013-04-08 21:52:31

标签: opengl exc-bad-access

我有一个奇怪的问题,很多OpenGL功能在我的MacBook Air中因EXC_BAD_ACCESS而失败。像glGenBuffers或glGetString(GL_VENDOR)这样非常简单的函数会得到这个结果。我在Xcode中运行它。我得到了分段错误:11如果我在终端运行。

这样的示例代码失败了:

#include<GLUT/glut.h>
#include<OpenGL/gl.h>
#include<OpenGL/glu.h>
#include<OpenGL/glext.h>

int main(){
    unsigned int test[3];
    glGenBuffers(3, test);
    return 0;
}

我不确定这是否是我的系统的问题。我正在使用2012版MacBook Air和OSX 10.8.2。

1 个答案:

答案 0 :(得分:3)

你的OpenGL上下文创建代码在哪里?您需要一个有效的,有效的OpenGL上下文,以便您可以访问OpenGL。同样通过包含glext.h,您将glGenBuffers声明为必须通过扩展加载机制初始化的函数指针。如果不将该指针初始化为正确的OpenGL函数,则取消引用它(=调用它)将导致段错误。

在MacOS X中,您通常不需要glext.h,因为可用版本的MacOS X实际支持的所有OpenGL功能都已存在于OS X Framework中。

如果您想支持各种MacOS X版本,使用扩展机制是有意义的。