2013-10-23 80 views
6

我正在使用SDL2創建應用程序& OpenGL,它在3臺不同的計算機上工作正常。但另一臺計算機(更新Arch Linux的),它不,它與此錯誤崩潰:SDL2 - 檢查是否創建了OpenGL上下文

OpenGL context already created 

所以我的問題是:我如何檢查OpenGL上下文已經創造出來的?然後,如果它已經被創建,我如何得到它的處理?

如果我不能這樣做,我該如何繞過這個問題?

回答

3

SDL2確實不是實際上創建一個OpenGL上下文沒有你要求做一個。但是,如果您在OpenGL完全無法使用的情況下要求它創建OpenGL上下文,則SDL2喜歡使用自由式風格的自定義風格。 (實際的原因是它在錯誤檢查中做得不好,所以如果X無法創建OpenGL上下文,它假定它是因爲上下文已經創建)

因此,要回答第三個問題(「如何我是否繞過這個問題「),你必須在嘗試使用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 
} 
相關問題