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

时间:2013-01-11 10:45:18

标签: c++ opengl qt-creator sfml glew

我尝试使用最新版本的qt创建器设置SFML 2.0,我已经设置了SFML,我导入了一个我在visual studio中编写的小游戏。编译后,我明白了:

enter image description here

我尝试了什么

  • 从头开始重新安装整个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

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

  • 我的gcc版本是4.6.2

  • 我的gcc是DW2

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

修改 我无法向您展示我的所有代码,它是超过20个文件,我几乎90%确定它不是我的代码,我已经在上面说过:我可以在任何IDE上运行此代码而没有任何警告甚至错误,除了qt creator。

4 个答案:

答案 0 :(得分:24)

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

错:

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

好:

 glutInitDisplayMode(GLUT_RGB);
 glewInit();

编辑我认为对于SFML:

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

编辑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;
}

我的输出:

Start
Test 1
Missing GL version
Init window
Test 2
End

编译:{{1​​}}

祝你好运;)

答案 1 :(得分:5)

根据user3648895的要求,我会在评论之外单独发布我的答案。

对于那些使用GLFW而不是SFML的人,你需要在glfwMakeContextCurrent之后调用glewInit()

答案 2 :(得分:3)

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

答案 3 :(得分:1)

放入glewInit();在创建sf :: window之后,解决了我在sfml中使用glew的问题