我一直在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中一样.
我个人不会使用退出命令.
我会抛出异常,因此您可以在函数结束时清除任何其他初始化.
即:
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教程已经有很多好的地方了.试试这个.
| 归档时间: |
|
| 查看次数: |
36653 次 |
| 最近记录: |