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
}