5

我正在开发一个OpenGL L 应用程序,需要使用glew库。我正在使用Visual Studio C++ 2008 Express

我使用 gl.h、glu.h 和 glut.h 编译了一个程序,它很好地完成了它应该做的事情。但是在包含 glew.h 之后它仍然编译得很好,但是当我尝试时:

glewInit();
if (glewIsSupported("GL_VERSION_2_0"))
    printf("Ready for OpenGL 2.0\n");
else {
    printf("OpenGL 2.0 not supported\n");
}

它继续打印:

“不支持 OpenGL 2.0”。

我尝试将其更改为glewIsSupported("GL_VERSION_1_3")甚至glewIsSupported("GL_VERSION_1_0")它仍然返回错误,这意味着它不支持任何 OpenGL 版本。

我有一个 Radeon HD 5750,所以它应该支持 OpenGL 3.1 和 3.2 的一些功能。我知道所有设备驱动程序都已正确安装,因为我能够运行 ATI 提供的 Radeon sdk 中的所有程序。

我还安装了 Opengl Extensions Viewer 3.15,上面写着 OpenGL Version 3.1 Ati Driver 6.14.10.9116。我厌倦了所有这些,,,,,,所有这些GLEW_VERSION_1_1都返回错误。GLEW_VERSION_1_2GLEW_VERSION_1_3GLEW_VERSION_2_0GLEW_VERSION_2_1GLEW_VERSION_3_0

还有其他建议吗?我什至尝试过GLEW_ARB_vertex_shader && GLEW_ARB_fragment_shader,这也返回错误。

4

4 回答 4

8

glewIsSupported旨在检查并查看是否支持特定功能。你想要的东西更像...

if (GLEW_VERSION_1_3)
{
    /* Yay! OpenGL 1.3 is supported! */
}
于 2009-12-30T20:57:39.877 回答
2

可能缺少必要的初始化。我遇到同样的问题。这就是我解决问题的方法:您需要包括glCreateWindow()前面。包括此功能,然后重试。

于 2013-06-04T11:21:33.560 回答
0

首先,您应该检查 glew 是否已正确初始化:

 if(glewInit() != GLEW_OK)
 { // something is wrong };

其次,您需要在调用之前创建上下文glewInit()

第三,你也可以试试:

  glewExperimental=true;

打电话之前glewInit()

于 2015-07-02T11:39:39.107 回答
0

我在通过windows RDP运行程序时遇到了同样的问题,然后我注意到我的显卡在使用RDP时可能无法正常工作,所以我尝试了teamviewer,glewinfo.exe和我的程序都开始正常工作。

OP的问题可能会解决很长时间,只是为了其他人的信息。

于 2016-03-30T16:31:34.540 回答