在Windows下使用GLEW使用OpenGL扩展
我一直很痛苦地在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 ++编译器,那么执行此操作的一种方法是在代码中添加以下行:
#pragma comment(lib, "glew32.lib")
在代码中添加一条#include <GL / glew.h>行。确保将其放置在其他GL头文件的include之上。 (如果包含glew.h
,则实际上可能不需要包含GL头文件。)
初始化GLUT或者GL后,使用glewInit()
初始化GLEW。如果失败,则说明设置有问题。
if (GLEW_OK != glewInit()) { // GLEW failed! exit(1); }
检查我们要使用的扩展名现在是否可以通过GLEW获得。我们可以通过检查GLEW公开的名为GLEW_your_extension_name的布尔变量来执行此操作。
Example:
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教程已经有很多不错的地方。例如尝试这个。