【发布时间】:2008-08-20 03:19:34
【问题描述】:
我一直在 Windows 上使用 OpenGL 扩展 painful way。 GLEW 是更简单的方法吗?我如何开始使用它?
【问题讨论】:
我一直在 Windows 上使用 OpenGL 扩展 painful way。 GLEW 是更简单的方法吗?我如何开始使用它?
【问题讨论】:
是的,OpenGL 扩展牧马人库 (GLEW) 是在 Windows 上使用 OpenGL 扩展的一种轻松方式。以下是如何开始使用它:
确定您希望使用的 OpenGL 扩展和扩展 API。 OpenGL 扩展在OpenGL Extension Registry 中列出。
检查您的显卡是否支持您希望使用的扩展。为您的显卡下载并安装最新的驱动程序和 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 公开的名为 GLEW_your_extension_name 的布尔变量来做到这一点。
例子:
if (!GLEW_EXT_framebuffer_object)
{
exit(1);
}
就是这样!您现在可以在代码中使用 OpenGL 扩展调用,就好像它们自然存在于 Windows 中一样。
【讨论】:
undefined reference to '_imp__glewInit@0' 和 undefined reference to '_imp____glewCreateShader'
#pragma comment(lib, "glew32.lib") 仅适用于 Visual C++。对于 MinGW,您应该将库添加到编译器的命令行(我认为是 -L)。
我个人不会使用退出命令。
我会抛出一个异常,以便您可以在函数结束时清除任何其他初始化。
即:
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 教程已经有很多好地方了。 Try this one for instance.
【讨论】:
我浪费了一些时间,但最终我设法让 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)并在打开的 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>
【讨论】: