在Windows下使用GLEW使用OpenGL扩展

在Windows下使用GLEW使用OpenGL扩展

Using GLEW to use OpenGL extensions under Windows

我一直很痛苦地在Windows上使用OpenGL扩展。 GLEW是更简单的方法吗? 我如何开始呢?


是的,OpenGL Extension Wrangler Library(GLEW)是在Windows上使用OpenGL扩展的一种简便方法。这是开始的方法:

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

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

GLEW随附了NVIDIA OpenGL SDK的最新版本。如果您使用的是此方法,则无需执行以下某些步骤。

下载GLEW并解压缩。

将GLEW bin路径添加到Windows PATH环境变量。或者,您也可以将glew32.dll放在Windows拾取其DLL的目录中。

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

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

指示编译器在链接期间使用glew32.lib。如果您使用的是Visual C ++编译器,那么执行此操作的一种方法是在代码中添加以下行:

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

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

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

1
2
3
4
5
if (GLEW_OK != glewInit())
{
    // GLEW failed!
    exit(1);
}

检查您要使用的扩展名现在是否可以通过GLEW获得。您可以通过检查由GLEW公开的名为GLEW_your_extension_name的布尔变量来完成此操作。

Example:

1
2
3
4
if (!GLEW_EXT_framebuffer_object)
{
    exit(1);
}

而已!现在,您可以在代码中使用OpenGL扩展调用,就像它们对于Windows自然存在一样。


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

我会抛出一个异常,以便您可以在函数末尾清除所有其他初始化。

即:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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教程已经有很多不错的地方。例如尝试这个。


我浪费了一些时间,但最终我设法使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"的行,并将其替换为" GLEW_DEST?= C:/ MinGW"

现在您可以开始了,打开MSYS(在我的情况下为C:\ MinGW \ msys \ 1.0 \ msys.bat),然后在打开的外壳中转到" Makefile"所在的文件夹。

然后写一个简单的:" make install",工作就完成了(至少对我来说,它是有效的)

PS:我还将复制的glew-1.10.0-win32 \ glew-1.10.0 \ bin \ release \ Win32文件复制粘贴到我的System32文件夹中,并且在Eclipse CDT中,我在链接器选项中添加了" glew32"库,并添加了一个#include 之前的#include


推荐阅读