使用GLEW在Windows下使用OpenGL扩展

24

我一直在Windows上以痛苦的方式使用OpenGL扩展。GLEW是更容易的方法吗?如何入门?

3个回答

39

是的,OpenGL Extension Wrangler Library(GLEW)是在Windows上使用OpenGL扩展的无痛方式。以下是如何开始使用它:

确定您要使用的OpenGL扩展和扩展API。 OpenGL扩展列在OpenGL扩展注册表中。

检查您的显卡是否支持您要使用的扩展。下载并安装最新的显卡驱动程序和SDK。

NVIDIA OpenGL SDK的最新版本附带有GLEW。如果您使用此工具集,则不需要执行以下某些步骤。

下载GLEW并解压缩它。

将GLEW bin路径添加到Windows PATH环境变量中。或者,您还可以将glew32.dll放入Windows选择其DLL的目录中之一。

将GLEW include路径添加到编译器的包含目录列表中。

将GLEW lib路径添加到编译器的库目录列表中。

指示编译器在链接期间使用glew32.lib。如果使用Visual C ++编译器,则可以通过将以下行添加到代码中来执行此操作:

#pragma comment(lib, "glew32.lib")

在您的代码中添加#include <GL/glew.h>。 确保将其放置在其他GL头文件包含的位置之上。(如果包含glew.h,则实际上可能不需要包含GL头文件。)

在初始化GLUT或GL之后使用glewInit()来初始化GLEW。 如果它失败了,则说明您的设置存在问题。

if (GLEW_OK != glewInit())
{
    // GLEW failed!
    exit(1);
}

检查您希望使用的扩展是否可以通过GLEW使用。您可以通过检查一个名为GLEW_your_extension_name的布尔型变量来实现。

例:

if (!GLEW_EXT_framebuffer_object)
{
    exit(1);
}

就是这样!现在,您可以像Windows自然存在的一样在代码中使用OpenGL扩展调用。


3
您好。这个东西能在MinGW上用吗?我已经尝试了2天,但是所有我得到的都是像undefined reference to '_imp__glewInit@0'undefined reference to '_imp____glewCreateShader'之类的错误。 - Daniel Node.js
丹尼尔:这个解决方案是使用Visual C++完成的。我不知道它是否适用于MingGW。 - Ashwin Nanjappa
据我所知,#pragma comment(lib, "glew32.lib") 只适用于 Visual C++。对于 MinGW,您应该将库添加到编译器的命令行中(我认为是 -L)。 - Thiago Negri
@DantheMan 尝试更改库的顺序,特别是在 C::B 中,你有“项目”和“目标”设置,并且可以决定哪个先连接。我不完全理解它,但我就是这样解决了我的问题:)。 - kolenda
我应该选择哪个 GLEW,源代码还是二进制文件?我很困惑...我注意到其中一个 lib 文件夹是空的。 - Andrei
谢谢。添加glewExperimental = GL_TRUE;可能有助于处理OpenGL新的调用。 - kiranpradeep

6

个人而言,我不会使用退出命令。

我会抛出异常,这样你就可以在函数结束时清除任何其他的初始化。

例如:

try
{
    // init opengl/directx
    // init directaudio
    // init directinput

    if (GLEW_OK != glewInit())
    {
        throw std::exception("glewInit failed");
    }
}
catch ( const std::exception& ex )
{
    // message to screen using ex.what()
    // clear up
}

我同意OJ的观点- 如果你想为他人编写教程,那么这真的不是正确的地方。已经有很多好的OpenGL教程网站了。例如这个


这基本上与问题无关。 - Nikita
@Nikita 当这个问题在15年前被提出时,还没有评论系统,所以人们会直接回复。这很可能是对Ashwin的回应。 - graham.reeds

4

我花了一些时间,但最终成功让GLEW运行起来了。我使用的是Windows7(x64),Eclipse CDT和MinGW,方法如下:

下载MSYS(用于MinGW),并确保已正确安装MinGW(PATH环境变量已正确设置): http://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.10/MSYS-1.0.10.exe/download?use_mirror=freefr&download=

安装完MSYS后,前往以下网址: http://glew.sourceforge.net/ 并下载UNIX系统所需的TGZ包。

然后打开该包(也可以使用7zip),找到"Makefile"。 用文本编辑器(例如记事本)打开它,找到包含"GLEW_DEST"的行,并将其替换为类似"C:/MinGW"的内容。

现在你已经准备好了,在MSYS中打开(我的情况下是C:\MinGW\msys\1.0\msys.bat),并在打开的shell中进入包含"Makefile"的文件夹。

然后输入简单的命令:"make install",工作就完成了(至少对我而言是这样的)

PS:我还将glew-1.10.0-win32\glew-1.10.0\bin\Release\Win32文件夹中的文件复制到了我的System32文件夹中,并在Eclipse CDT中添加了库"glew32",并在#include <GL/glut.h>之前添加了#include <GL/glew.h>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接