2013-10-23 17 views
6

Sto creando un'applicazione utilizzando SDL2 & OpenGL e ha funzionato correttamente su 3 computer diversi. Ma su un altro computer (un Arch Linux aggiornato), non è così, e si blocca con questo errore:SDL2 - Verifica se il contesto OpenGL è stato creato

OpenGL context already created 

Quindi la mia domanda è: Come faccio a controllare se il contesto OpenGL è già stato creato? E poi, se è già stato creato, come ottengo un handle per questo?

Se non riesco a farlo, come faccio a ignorare questo problema?

risposta

3

SDL2 fa non di fatto creare un contesto OpenGL senza che si chieda di crearne uno. Tuttavia, se chiedete di creare un contesto OpenGL quando OpenGL non funziona affatto, a SDL2 piace, erm, freestyle un po '. (Il vero motivo è che fa un cattivo lavoro nel controllo degli errori, quindi se X non riesce a creare un contesto OpenGL, si presuppone che sia perché è già stato creato un contesto)

Quindi, per rispondere alla terza domanda ("come faccio a bypassare questo problema "), devi correggere OpenGL prima di tentare di usarlo. Cifre, giusto?

Per rispondere al primo e secondo, beh, nessuna chiamata API che io sappia ... ma si può farlo un modo leggermente diverso:

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 
} 
Problemi correlati