我一直在Windows painful way上使用OpenGL扩展。 GLEW是更容易的方式吗?我该如何开始使用它?
答案 0 :(得分:33)
是的, OpenGL Extension Wrangler Library (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 路径添加到编译器的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中一样。
答案 1 :(得分:5)
我个人不会使用退出命令。
我会抛出异常,因此您可以在函数结束时清除任何其他初始化。
即:
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
答案 2 :(得分:3)
我失去了一些时间,但最后我设法让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>