我一直在以痛苦的方式在 Windows 上使用 OpenGL 扩展。GLEW 是更简单的方法吗?我如何开始使用它?
3 回答
是的,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包含路径添加到编译器的包含目录列表中。
将 GLEW库路径添加到编译器的库目录列表中。
指示您的编译器在链接期间使用glew32.lib。如果您使用的是 Visual C++ 编译器,那么执行此操作的一种方法是将以下行添加到您的代码中:
#pragma comment(lib, "glew32.lib")
在您的代码中添加#include <GL/glew.h>
一行。确保它位于其他 GL 头文件的包含之上。(如果您包含 GL 头文件,您实际上可能不需要包含glew.h
。)
glewInit()
初始化GLUT 或 GL 后使用初始化 GLEW 。如果失败,则说明您的设置有问题。
if (GLEW_OK != glewInit())
{
// GLEW failed!
exit(1);
}
检查您希望使用的扩展程序现在是否可以通过 GLEW 获得。您可以通过检查 GLEW 公开的名为GLEW _your_extension_name的布尔变量来执行此操作。
例子:
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”,工作就完成了(至少对我来说它有效)
PS:我还将 glew-1.10.0-win32\glew-1.10.0\bin\Release\Win32 文件复制粘贴到我的 System32 文件夹中,在 Eclipse CDT 中,我在链接器选项中添加了库“glew32”并添加了一个#include <GL/glew.h>
前#include <GL/glut.h>