在Windows下使用GLEW使用OpenGL扩展

时间:2020-03-05 18:40:59  来源:igfitidea点击:

我一直很痛苦地在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教程已经有很多不错的地方。例如尝试这个。