Impossibile Inizializzare GLEW. Mancanti versione GL

Ho provato a impostare SFML 2.0 con l’ultima versione di qt creator, ho impostato SFML a destra e ho importato un piccolo gioco che ho scritto in visual studio. Dopo la compilazione, ottengo questo:

Impossibile Inizializzare GLEW. Mancanti versione GL

Quello che ho provato

  • Reinstallazione di tutto il qt SDK e qt creator IDE da zero
  • Reinstallazione di SFML
  • reinstallazione di mingw
  • Ho provato a scrivere un semplice programma per assicurarsi che questo non è il mio codice, il programma viene compilato correttamente, ma quando chiudo l’applicazione, ho OpenGL errori che non è normale
  • Ho cercato di postare un thread sul SFML forum, ma senza alcun risultato.
  • Googling gli errori mostra alcuni risultati, che sono specifiche di OpenGL, e che sono troppo localizzata, essi non si applicano a me, nessuna risposta per questo avvenimento in SFML 2.0

Ulteriori dettagli

  • Sono in esecuzione windows XP SP3, con l’ultima versione di mingw e qt SDK e SFML

  • Il codice che sto cercando di lavorare con opere senza eventuali errori o anche avvertenze su Visual Studio 2010 e Code::Blocks

  • Sì, sono sicuro che SFML è impostato sul mio IDE, di base codice funziona, ma mostra gli errori più avanzate di codice mostra tutti gli sprite e come caselle di testo.
  • Io non compilare SFML me

  • La mia versione di gcc è 4.6.2

  • Mio gcc è un DW2 uno

Sto ottenendo nessun risultato, non so nemmeno come lontanamente avvicinarsi a questo fissaggio, neanche da dove cominciare.

MODIFICA
Non posso mostrare a tutti voi il mio codice, è più di 20 file, ho quasi il 90% sicuro che non è il mio codice, l’ho detto sopra: sono in grado di eseguire questo codice senza avvisi o anche errori su qualsiasi IDE ad eccezione di qt creator.

  • C’è qualcosa di sbagliato con il tuo codice di inizializzazione. GLEW genera questo errore quando il GLContext non è valido. Controllare il ciclo di vita dei vostri oggetti di inizializzazione per assicurarsi SFML non è stato rilasciato prima del tuo inizializzare GLEW.
  • non può essere il mio codice, questo funziona al 100% su quasi ogni IDE ho provato, e SFML non ha mai fatto questo per me, di solito non è openGL cose senza di me dover preoccuparsi di esso
  • Beh, l’errore è GLEW_ERROR_NO_GL_VERSION — il che significa che il GLContext è) non viene caricato, B) non è più valido — GL contesto deve essere creato e validato prima di chiamare glewInit(); non sono sicuro che cosa è cambiato dopo la tua mossa, ma sono sicuro che è qualcosa di stupido, considerando quanto sia frustrante 😀
  • Scrivere un hello world in SFML mostra gli stessi errori. Non è il codice per certo, sono sicuro che è qualcosa di stupido, ma non posso nemmeno lontanamente farsi un’idea di cosa c’è di sbagliato
  • Poi postare l’hello world.
InformationsquelleAutor Bugster | 2013-01-11



4 Replies
  1. 24

    È perché non sono l’inizializzazione di OpenGL.
    Esempio con la libreria glut.

    Sbagliato:

     glewInit();  //ERROR MISSING GL VERSION
     glutInitDisplayMode(GLUT_RGB); 

    Bene:

     glutInitDisplayMode(GLUT_RGB);
     glewInit();

    MODIFICA penso che per SFML:

     sf::Window   App(sf::VideoMode(400, 400, 32), "Window");
     glewInit();

    EDIT 2 Prova questo codice.

    #include <SFML/Window.hpp>
    #include <iostream>
    #include <GL/glew.h>
    
    int
    main(int, const char**)
    {
        GLenum      err;
    
        std::cout << "Start" << std::endl;
        std::cout << "Test 1" << std::endl;
        if ((err = glewInit()) != GLEW_OK)
            std::cout << glewGetErrorString(err) << std::endl;
    
        std::cout << "Init window" << std::endl;
        sf::Window  app(sf::VideoMode(400, 400, 32), "Windows");
    
        std::cout << "Test 2" << std::endl;
        if ((err = glewInit()) != GLEW_OK)
            std::cout << glewGetErrorString(err) << std::endl;
        std::cout << "End" << std::endl;
        return 0;
    }

    Il mio output:

    Start
    Test 1
    Missing GL version
    Init window
    Test 2
    End

    Compilare con: g++ -W -Wall -Werror main.cpp -lsfml-window -lGLEW

    Buona Fortuna 😉

    • Non dovrei essere l’inizializzazione che, SFML dovrebbe farlo per me, io sto usando una libreria che dovrebbe essere l’inizializzazione di openGL, non so come lavorare in OpenGL, ma io so come lavorare in SFML e non funziona a causa di questo errore.
    • Si può verificare ? 😉
    • Ho avuto GLEW_OK modificando glutInitDisplayMode(GLUT_RGB); la soluzione di cui sopra per glutInit(&argc, argv); e glutCreateWindow("GLEW Test");. Spero che questo aiuta~
    • Per coloro che utilizzano GLFW invece di SFML, è necessario chiamare glewInit() dopo glfwMakeContextCurrent
    • dovrebbe rendere il tuo commento separato Q&A; ate my ore!!!
    • Voi, signore, sono il WinRar.

  2. 5

    Alla richiesta di user3648895, sto postando la mia risposta al di fuori dei commenti separatamente.

    Per coloro che utilizzano GLFW invece di SFML, è necessario chiamare glewInit() dopo glfwMakeContextCurrent

  3. 1

    Per coloro che utilizzano SDL2 del Renderer di funzioni, ha bisogno di essere di destra dopo SDL_CreateRenderer.

    • SDL_CreateRenderer non è per openGL, giusto? Perché per GL è necessario fare in un contesto.
    • Non ho SDL_CreateRenderer chiamata nel mio codice, ma questo era un suggerimento. glew di inizializzazione deve essere chiamato dopo alcuni SDL creazione.

Lascia un commento