0

MacBook Air で多くの OpenGL 関数が 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;
}

これが私のシステムの問題なのかどうかはわかりません。OSX 10.8.2 で 2012 バージョンの MacBook Air を使用しています。

4

1 に答える 1

3

OpenGL コンテキスト作成コードはどこにありますか? OpenGL にアクセスするには、有効でアクティブな OpenGL コンテキストが必要です。また、含めることにより、拡張機能の読み込みメカニズムを介して初期化する必要がある関数ポインターとしてglext.h宣言します。glGenBuffers適切な OpenGL 関数へのポインターを初期化せずに、逆参照 (= 呼び出し) すると、segfault が発生します。

glext.hMacOS X では、利用可能なバージョンの MacOS X で実際にサポートされているすべての OpenGL 関数が OS X フレームワークに既に存在するため、通常は必要ありません。

幅広い MacOS X バージョンをサポートしたい場合は、拡張メカニズムを使用するのが理にかなっています。

于 2013-04-08T22:53:04.237 に答える