0

我有一个奇怪的问题,很多 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 。

4

1 回答 1

3

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

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

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

于 2013-04-08T22:53:04.237 回答