无法初始化GLEW.缺少GL版本

Bug*_*ter 22 c++ opengl glew qt-creator sfml

我试图用最新版本的qt创建器设置SFML 2.0,我已经设置了SFML,我导入了一个我在visual studio中编写的小游戏.编译后,我得到这个:

在此输入图像描述

我尝试了什么

  • 从头开始重新安装整个qt SDK和qt creator IDE
  • 重新安装SFML
  • 重新安装mingw
  • 我试着编写一个简单的程序来确保它不是我的代码,程序编译正确但是当我关闭应用程序时,我得到的OpenGL错误不正常
  • 我尝试在SFML论坛上发帖,但无济于事.
  • 谷歌搜索错误显示一些特定于OpenGL的结果,并且过于本地化,它们不适用于我,在SFML 2.0中没有回答这个问题

额外细节

  • 我正在运行Windows XP SP3,最新版本的mingw和qt SDK以及SFML

  • 我正在尝试使用的代码在Visual Studio 2010 Code :: Blocks 上没有任何错误甚至警告

  • 是的,我确信在我的IDE上设置了SFML,基本代码可以正常运行,但是显示了这些错误,更高级的代码将所有精灵和文本显示为框.
  • 我自己没有编译SFML

  • 我的gcc版本是4.6.2

  • 我的gcc是DW2

我没有得到任何结果,我甚至不知道如何远程接近解决这个问题,甚至不知道从哪里开始.

编辑 我无法向您展示我的所有代码,它是超过20个文件,我几乎90%确定它不是我的代码,我上面说过:我可以运行此代码,没有任何警告甚至任何IDE上的错误除了qt创建者.

Que*_*rez 24

这是因为你没有初始化OpenGL.lib过剩的例子.

错误:

 glewInit();  // ERROR MISSING GL VERSION
 glutInitDisplayMode(GLUT_RGB); 
Run Code Online (Sandbox Code Playgroud)

好:

 glutInitDisplayMode(GLUT_RGB);
 glewInit();
Run Code Online (Sandbox Code Playgroud)

编辑我认为对于SFML:

 sf::Window   App(sf::VideoMode(400, 400, 32), "Window");
 glewInit();
Run Code Online (Sandbox Code Playgroud)

编辑2测试此代码.

#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;
}
Run Code Online (Sandbox Code Playgroud)

我的输出:

Start
Test 1
Missing GL version
Init window
Test 2
End
Run Code Online (Sandbox Code Playgroud)

编译: g++ -W -Wall -Werror main.cpp -lsfml-window -lGLEW

祝好运 ;)

  • 对于那些使用GLFW而不是SFML的人,你需要在glfwMakeContextCurrent之后调用glewInit() (13认同)
  • 你能测试吗?;) (4认同)
  • 我通过在上面的解决方案中修改`glutInitDisplayMode(GLUT_RGB);`得到`GLEW_OK`,``glutInit(&argc,argv);`和`glutCreateWindow("GLEW Test");`.希望这有助于〜 (2认同)
  • @syler 应该将您的评论作为单独的问答;吃了我的小时!! (2认同)

小智 6

如果您在 glfw 中使用 glew,请使用glfwMakeContextCurrenthttps://github.com/Cloudef/glhck/issues/15

  • 您可以通过描述您认为是提问者问题的原因以及您的答案如何解决此问题来提高您的答案的质量。 (2认同)

Syl*_*ler 5

应user3648895的请求,我将我的答案单独发布在评论之外。

对于使用GLFW而不是SFML的用户,您需要在glfwMakeContextCurrent之后调用glewInit()