我有一个奇怪的问题,很多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。
答案 0 :(得分:3)
你的OpenGL上下文创建代码在哪里?您需要一个有效的,有效的OpenGL上下文,以便您可以访问OpenGL。同样通过包含glext.h
,您将glGenBuffers
声明为必须通过扩展加载机制初始化的函数指针。如果不将该指针初始化为正确的OpenGL函数,则取消引用它(=调用它)将导致段错误。
在MacOS X中,您通常不需要glext.h
,因为可用版本的MacOS X实际支持的所有OpenGL功能都已存在于OS X Framework中。
如果您想支持各种MacOS X版本,使用扩展机制是有意义的。