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

有帮助吗?

解决方案

是的 OpenGL 扩展牧马人库 (GLEW) 是在 Windows 上使用 OpenGL 扩展的一种轻松方式。以下是如何开始使用它:

确定您想要使用的 OpenGL 扩展和扩展 API。OpenGL 扩展列于 OpenGL 扩展注册表.

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

最新版本 NVIDIA OpenGL SDK 与 GLEW 一起发货。如果您正在使用此功能,则无需执行以下某些步骤。

下载 格鲁夫 并解压它。

添加 GLEW 垃圾桶 您的 Windows 路径 小路 环境变量。或者,您也可以将 glew32.dll 在 Windows 获取其 DLL 的目录中。

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

添加 GLEW 编译器库目录列表的路径。

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

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

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

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

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

检查您想要使用的扩展程序现在是否可以通过 GLEW 获得。您可以通过检查名为的布尔变量来完成此操作 格鲁夫_你的扩展名 这是由 GLEW 曝光的。

例子:

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

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

其他提示

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

我会抛出一个异常,以便您可以在函数结束时清除任何其他初始化。

IE:

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/并下载 TGZ 软件包,该软件包旨在与 UNIX 系统一起使用

然后打开包(也可以使用7zip)并找到“Makefile”。打开它并使用文本编辑器(记事本应该可以正常工作)找到包含“GLEW_DEST”的行并将其替换为“GLEW_DEST ?= C:/MinGW”之类的内容

现在你准备好了,打开MSYS(在我的例子中是C:\MinGW\msys\1.0\msys.bat)并在打开的shell中,转到“Makefile”所在的文件夹。

然后写一个简单的:“make install”并且工作完成(至少对我来说它有效)

附:我还将 glew-1.10.0-win32\glew-1.10.0\bin elease\Win32 文件复制粘贴到我的 System32 文件夹中,并在 Eclipse CDT 中在链接器选项中添加了库“glew32”,并添加了 #include <GL/glew.h>#include <GL/glut.h>

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top