glu 、glut 、freeglut与glew 作用

glu是实用库,包含有43个函数,函数名的前缀为glu。Glu 为了减轻繁重的编程工作,封装了OpenGL函数,Glu函数通过调用核心库的函数,为开发者提供相对简单的用法,实现一些较为复杂的操作。
glaux是OpenGL辅助库,包含有31个函数,函数名前缀为aux。这部分函数提供窗口管理、输入输出处理以及绘制一些简单三维物体。
glut是实用工具库,基本上是用于做窗口界面的,并且是跨平台(所以有时你喜欢做简单的demo的话,可以光用glut就ok了)

一,为什么需要freeglut和glew

    OpenGL官方文档中提到:
    Before you can actually use OpenGL in a program, you must first initialize it. Because OpenGL is platform-independent,
there is not a standard way to initialize OpenGL; each platform handles it differently. Non-C/C++ language bindings can also
 handle these differently.There are two phases of OpenGL initialization. The first phase is the creation of an OpenGL context;
the second phase is to load all of the necessary functions to use OpenGL. Some non-C/C++ language bindings merge these into one.
    大概意思就是说,在你真正能够在程序中使用OpenGL之前,你需要对他进行初始化,但是由于OpenGL是跨平台的,所以也没有一个标准的方式
进行初始化。OpenGL初始化分为两个阶段:
    第一个阶段,你需要创建一个OpenGL上下文环境,这个上下文环境存储了所有与OpenGL相关的状态(OpenGL是一个状态机),上下文位于操作
系统中某个进程中,一个进程可以创建多个上下文,每一个上下文都可以描绘一个不同的可视界面,就像应用程序中的窗口;简单来理解就是为了创建
一个窗口;
    第二个阶段,你需要定位所有需要在OpenGL中使用的函数,这是为什么呢?后面会继续讨论;
    自然,freeglut和glew就是用来解决这两个问题的;
二,freeglut的作用
    因为OpenGL是跨平台的,这给开发者带来了方便,但是在创建上下文时这也是一个麻烦的地方,因为不同平台的窗口系统和API都是不一样的
,freeglut就是一个openGL的工具库,封装了各个平台初始化窗口的过程,开发者只需要调用这个库中的初始化函数即可创建一个上下文;
三,glew的作用
    因为OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。由于OpenGL驱动版本众多,它大多数函数的
位置都无法在编译时确定下来,需要在运行时查询。任务就落在了开发者身上,开发者需要在运行时获取函数地址并将其保存在一个函数指
针中供以后使用。取得地址的方法因平台而异,在Windows上会是类似这样:

// 定义函数原型
typedef void (*GL_GENBUFFERS) (GLsizei, GLuint*);
// 找到正确的函数并赋值给函数指针
GL_GENBUFFERS glGenBuffers  = (GL_GENBUFFERS)wglGetProcAddress("glGenBuffers");
// 现在函数可以被正常调用了
GLuint buffer;
glGenBuffers(1, &buffer);


    你可以看到代码非常复杂,而且很繁琐,我们需要对每个可能使用的函数都要重复这个过程。幸运的是,有些库能简化此过程,
其中GLEW是目前最新,也是最流行的库。
--------------------- 
作者:Qice 
来源:CSDN 
原文:https://blog.csdn.net/z_dmsd/article/details/70949102 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值