web-dev-qa-db-fra.com

Impossible d'initialiser glew. Manquant GL

J'ai essayé de configurer SFML 2.0 avec la dernière version du Créateur Qt, j'ai configuré SFML à droite et j'ai importé un petit jeu que j'ai écrit dans Visual Studio. En compilation, je reçois ceci:

enter image description here

ce que j'ai essayé

  • Réinstallation de l'ensemble du SDK QT et QT Creator IDE à partir de zéro
  • Réinstaller SFML
  • réinstaller Mingw
  • J'ai essayé d'écrire un programme simple pour m'assurer que ce n'est pas mon code, le programme compile correctement, mais lorsque je ferme l'application, j'obtiens des erreurs OpenGL qui n'est pas normale
  • J'ai essayé de poster un fil sur les forums SFML, mais en vain.
  • Googling Les erreurs affichent quelques résultats spécifiques à OpenGL et qui sont trop localisées, ils ne s'appliquent pas à moi, aucune réponse pour cela se produit dans SFML 2.0

Détails supplémentaires

  • Je cours Windows XP SP3, dernière version de Mingw et QT SDK et SFML

  • Le code que j'essaie de travailler avec des œuvres sans des erreurs ou même des avertissements sur Visual Studio 2010 et code :: blocs

  • Oui, je suis sûr que SFML est configuré sur mon IDE, fonctionne de code de base, mais montre que ces erreurs et plus de code avancé affichent toutes les sprites et le texte en tant que cases.
  • Je n'ai pas compilé sfml moi-même

  • Ma version GCC est 4.6.2

  • Mon GCC est un dw2 un

Je ne reçois pas de résultats, je ne sais même pas comment se rapprocher à distance de la fixer, pas même où commencer.

[~ # ~] éditer [~ # ~]] Je ne peux pas vous montrer tout mon code, c'est plus de 20 fichiers et je suis sûr de pas 90% sûr que ce n'est pas mon code, j'ai dit Ci-dessus: je peux exécuter ce code sans aucun avertissement ni des erreurs sur tout IDE sauf le créateur QT.

22
Bugster

C'est parce que vous n'initialisez pas OpenGL. Exemple avec la glouton lib.

Tort:

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

Bon:

 glutInitDisplayMode(GLUT_RGB);
 glewInit();

[~ # ~] édition [~ # ~ ~] Je pense pour SFML:

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

Edit 2 Testez ce code.

#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;
}

Ma sortie :

Start
Test 1
Missing GL version
Init window
Test 2
End

Compiler avec: g++ -W -Wall -Werror main.cpp -lsfml-window -lGLEW

Bonne chance ;)

24
Quentin Perez

À la demande de User3648895, je pose ma réponse en dehors des commentaires séparément.

Pour ceux qui utilisent GLFW au lieu de SFML, vous devez appeler glewinit () après GLFWMAKECONTEXTEXTRENTT

5
Syler

Si vous utilisez glew avec GLFW, utilisez glfwMakeContextCurrent ( https://github.com/cloudef/glhck/issues/15 )

3
Telhar