使用GLEW在Windows下使用OpenGL扩展

Ash*_*ppa 23 opengl glew

我一直在Windows上使用OpenGL扩展这种痛苦的方式.GLEW是更容易的方式吗?我该如何开始使用它?

Ash*_*ppa 33

是的,OpenGL扩展牧马人库(GLEW)是一种在Windows上使用OpenGL扩展的轻松方式.以下是如何开始使用它:

确定您希望使用的OpenGL扩展和扩展API.OpenGL 扩展注册表中列出了OpenGL扩展.

检查您的图形卡是否支持您要使用的扩展程序.下载并安装适用于您的图形卡的最新驱动程序和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")
Run Code Online (Sandbox Code Playgroud)

#include <GL/glew.h>在代码中添加一行.确保将其放在其他GL头文件的包含之上.(如果包含,您可能实际上不需要包含GL头文件glew.h.)

glewInit()在初始化GLUT或GL后使用初始化GLEW .如果失败,那么您的设置有问题.

if (GLEW_OK != glewInit())
{
    // GLEW failed!
    exit(1);
}
Run Code Online (Sandbox Code Playgroud)

检查您希望使用的扩展程序现在是否可以通过GLEW获得.您可以通过检查GLEW 公开的名为GLEW _your_extension_name的布尔变量完成此操作.

例:

if (!GLEW_EXT_framebuffer_object)
{
    exit(1);
}
Run Code Online (Sandbox Code Playgroud)

而已!您现在可以在代码中使用OpenGL扩展调用,就像它们自然存在于Windows中一样.

  • 你好.这适用于MinGW吗?我现在已经尝试了2天,但我得到的都是错误,如:`未定义引用'_imp__glewInit @ 0'`和'未定义引用'_imp ____ glewCreateShader' (3认同)

gra*_*eds 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
}
Run Code Online (Sandbox Code Playgroud)

我同意OJ的意见 - 如果你想为其他人编写教程,那么这真的是错误的地方.opengl教程已经有很多好的地方了.试试这个.