2013-10-23 4 views
6

私はSDL2 & OpenGLを使用してアプリケーションを作成しています.3つの異なるコンピュータで正常に動作しました。しかし、別のコンピュータ(更新アーチのLinux)上で、それはない、それはこのエラーでクラッシュ:SDL2 - OpenGLコンテキストが作成されているかどうかを確認します。

OpenGL context already created 

だから私の質問は:OpenGLコンテキストが既に作成されているかどうかはどのようにチェックしますか?そして、それがすでに作成されている場合、どうすればそのハンドルを取得できますか?

私がこれを行うことができない場合、どうすればこの問題を回避できますか?

答えて

3

SDL2はではありません。は、実際にOpenGLコンテキストを作成することなく作成します。しかし、OpenGLがまったく動作しないときにOpenGLコンテキストを作成するように要求すると、SDL2は、ermのフリースタイルを好きです。 (実際の理由は、エラーチェックではうまくいかないため、XがOpenGLコンテキストを作成できない場合、コンテキストがすでに作成されているためだと仮定します)

したがって、3番目の質問私はこの問題を回避するのですか? ")、OpenGLを使用する前にOpenGLを修正する必要があります。フィギュア、そう?

私の知っている第一及び第二の、よく、何のAPIの呼び出しに応答しないように...しかし、あなたはそれを少し異なる方法行うことができます。

SDL_Window* window = NULL; 
SDL_GLContext* context = NULL; // NOTE: This is a pointer! 

... 

int main(int argc, char** argv) { 
    // Stuff here, initialize 'window' 

    *context = SDL_GL_CreateContext(window); 

    // More stuff here 

    if (context) { 
     // context is initialized!! yay! 
    } 

    return 2; // Just to confuse people a bit =P 
} 
関連する問題