2013-04-08 63 views
0

我有一個奇怪的問題,很多OpenGL函數在我的MacBook Air中使用EXC_BAD_ACCESS失敗。一個非常簡單的函數,如glGenBuffers或glGetString(GL_VENDOR)會得到這個結果。我在Xcode中運行它。我得到分段錯誤:如果我運行在終端,則爲11。glGenBuffers和許多OpenGL函數EXC_BAD_ACCESS在Macbook Air中

像這樣的例子代碼失敗:

#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; 
} 

我不知道這是否與我的系統還是不成問題的。我在OSX 10.8.2上使用2012版MacBook Air。

回答

3

你的OpenGL上下文創建代碼在哪裏?您需要一個有效的,有效的OpenGL上下文,以便您可以訪問OpenGL。同樣包含glext.h您聲明glGenBuffers作爲函數指針,必須通過擴展加載機制進行初始化。沒有初始化該指針到正確的OpenGL函數,取消引用(=調用它)會導致段錯誤。

在MacOS X中,通常不需要glext.h,因爲所有可用版本的MacOS X實際支持的OpenGL函數都已存在於OS X Framework中。

如果您想支持各種MacOS X版本,那麼使用擴展機制很有意義。

相關問題