OpenGL 函数库相关的 API 有核心库(gl),实用库(glu),辅助库(aux)、实用工具库(glut),窗口库(glx、agl、wgl)和扩展函数库等。gl 是核心,glu 是对 gl 的部分封装。glx、agl、wgl 是针对不同窗口系统的函数。glut 是为跨平台的 OpenGL 程序的工具包,比aux 功能强大(aux 很大程度上已经被 glut 库取代)。扩展函数库是硬件厂商为实现硬件更新利用 OpenGL 的扩展机制开发的函数。

窗口管理

窗口操作在每个系统上都是不一样的,OpenGL 有目的地将这些操作抽象(Abstract)出去。这意味着我们不得不自己处理创建窗口,定义 OpenGL 上下文以及处理用户输入。幸运的是,有一些库已经提供了我们所需的功能。这些库节省了我们书写操作系统相关代码的时间,提供给我们一个窗口和上下文用来渲染。

glut

OpenGL 工具库(OpenGL Utility Toolkit),所有 glut 的库函数均以 glut 开头,但是版本太老了,理应被时代淘汰,不推荐使用。gult 最后版本 v3.7beta 的历史可追溯至 1998 年 8月,且该项目已经被废弃。它的许可证禁止任何人发布修改后的库代码。

freeglut

gult 对应的开源实现,完全兼容 glut,是 glut 的代替品,开源,功能齐全。目前来看,freeglut3.0(2015年3月7日)版本比其它版本稳定,可以使用。该项目几乎可以 100% 的替代原来的 glut,只有少数差别(如,the abandonment of SGI-specific features,按钮盒子和动态视频分辨率)和其他一小部分程序 bug。

glfw

glfw 无愧于其号称的 lightweight 的 OpenGL 框架,的确是除了跨平台必要做的事情都没有做,所以一个头文件,很少量的 API,就完成了任务。glfw 的开发目的是用于替代 glut 的,从代码和功能上来看,我想它已经完全的完成了任务。它是一个轻量级的,开源的,跨平台的library。支持 OpenGL 及 OpenGL ES,用来管理窗口,读取输入,处理事件等。

函数加载

OpenGL 只是一个标准/规范,具体的实现是驱动开发商针对特定显卡实现的。由于 OpenGL 驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询。所以任务就落在了开发者身上,开发者需要在运行时获取函数地址并将其保存在一个函数指针中供以后使用。这个过程非常复杂,而且很繁琐,需要对每个可能使用的函数都要重复这个过程。幸运的是,有些库能简化此过程。

glew

glut 或者 freegult 主要是 OpenGL 1.0 的基本函数功能,glew 是使用 OpenGL 2.0 之后的一个工具函数。

不同的显卡公司会发布一些只有自家显卡才支持的扩展函数,要想用这数涵数,不得不去寻找最新的 glext.h,有了 glew 扩展库,就再也不用为找不到函数的接口而烦恼,因为 glew 能自动识别你的平台所支持的全部 OpenGL 高级扩展函数。也就是说,只要包含一个 glew.h 头文件,你就能使用 gl,glu,glext,wgl,glx 的全部函数。

glew 支持目前流行的各种操作系统,但有一个缺陷是它并没有提供一种方式可以屏蔽 OpenGL 旧函数的调用,尽管可以使用 Core profile 的方式,但是代码中仍然存在 glVetex、glBegin 这样固定管线 OpenGL 的函数调用(虽然它们在 Core Profile 模式下没有任何作用),看起来不那么统一。要做到这一点可以使用下面的 glad。

glad

glad 是继 gl3w,glew 之后,当前最新的用来访问 OpenGL 规范接口的第三方库。简单说glad 是 glew 的升级版。

glad 是一个开源的库,它的配置与大多数的开源库有些许的不同,glad 使用了一个在线服务。在这里能够指定 glad 需要定义的 OpenGL 版本,并且根据这个版本加载所有相关的OpenGL 函数。这样做让 glad.h 中仅仅只包含我们想要的头文件,例如在设置 3.3 + Core Profile 版本之后,可以严格控制头文件中只有这些内容,所以凡是代码中有 OpenGL 旧函数的调用都会在编译的时候给出错误提示。

OpenGL 下面的 glut freeglut glfw 都是个啥相关推荐

  1. GLUT, freeGLUT, GLFW, GLEW, GLAD 关系与区别

    GLUT:(来自百科)(OpenGL Utility Toolkit)是一个处理OpenGL程式的工具库,负责处理和底层操作系统的呼叫以及I/O. 是专为构建中小型OpenGL程序.虽然GLUT是适合 ...

  2. OpenGL 各类库的解析 gl/glu/glut/freeglut/glfw/glew

    看了网上很多资料,讲的都不是很全,正好在学这一块,好好地总结一下吧 注:在windows中,对这些库的大小写是不作要求的 gl.h gl库是核心库,gl中包含了最基本的3D函数,可以再本地电脑中的: ...

  3. OpenGL 各类库的解析gl glu glut freeglut glfw glew

    gl.h gl库是核心库,gl中包含了最基本的3D函数,可以再本地电脑中的: C:\Program Files (x86)\MicrosoftSDKs\Windows\v7.0A\Include\gl ...

  4. OpenGL与gl glu glut freeglut glew glfw封装库关系(十五)

    1.概述     初学者往往搞不明白OpenGL与诸多库的联系下面一张图帮理清楚,gl glu glut freeglut glew glfw都是对OpenGL的封装而已.这些库已经将OpenGL.E ...

  5. OpenGL ES glut glew glfw glad freeglut

    目录 一.简介 1.freeglut 2.glew 3.glut 4.glfw 5.glad 二.分类 1.窗口管理 2.函数加载 三.组合使用 1.freeglut + glew 2.glfw + ...

  6. VS下glut freeglut GLtools glew等 配置教程

     转自:http://www.jianshu.com/p/b49fd7fe8b5c              freeglut 与 glut的差别: [源自百度百科] freeglut是GLUT ...

  7. VS2013环境下配置glut、glew、freeglut、gltools

    VS2013环境下配置glut.glew.freeglut.gltools 1.glew配置 1.解压glew文件下的compiled文件夹下的"glew-2.0.0-win32.zip&q ...

  8. OpenGL之glut、glfw、glew、glad等库之间的关系

    结论 1.glad与glew作用类似,实现对底层OpenGL接口封装 2.glfw与glut作用类似,创建窗口界面 3.glut年代久远,现在用glfw居多,可使用glfw+glad组合方式,比如这个 ...

  9. 洛阳九县八取名字_如果洛阳下面的县,都改回古代的名字,你觉得哪个最好听?...

    原标题:如果洛阳下面的县,都改回古代的名字,你觉得哪个最好听? 不知道你们有没有发现:自秦推行郡县制以来,很多上千年的古县地名,至今仍在沿用. 比如河南境内的修武县.温县.上蔡县.汤阴县.襄城县等,都 ...

  10. OpenGL初探-Win10+VS2017+freeglut+glew+gltools开发环境搭建

    最近在研究OpenGL,主要看的书是<OpenGL超级宝典(第5版)>,学习编程自然少不了从环境搭建开始,然后写一个Demo,运行成功即告开篇成功,本篇文章将使用书本中的2.5章节< ...

最新文章

  1. 强化学习vs遗传算法-人工智能在模拟领域的应用
  2. 为什么要把CV_8UC3(Vec3b)无符号整型转换成CV_32F(Vec3F)32位浮点数据类型?(在高精度下处理)
  3. linux内核5.3支持cpu,Linux 5.3版内核重磅发布:支持中国兆芯x86 CPU
  4. atitit.DD dragdrop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结
  5. Android开发:关于高德地图轨迹纠偏,只显示两个点问题的整体概述
  6. 下载m3u8加密视频
  7. 二分类最优阈值确定_结合mRMR选择和IFCM聚类的遥感影像分类算法
  8. php 微信支付V3接口
  9. 泰勒公式系列之一多项式逼近
  10. pandas-task08-文本数据.md
  11. 【原】iOS开发进阶(唐巧)读书笔记(二)
  12. Joel Spolsky在耶鲁大学的演讲
  13. 申请ios开发者证书到获取p12文件及profiles文件
  14. 如何才能使其输入/输出的参数个数不限
  15. 光遇服务器修复时间,光遇:测试服调整,瞬间Bug被修复?几家欢喜几家愁
  16. 百度朱光:将技术基因注入百度金融,是我们未来三五年要做的事
  17. Sox语音转换的相关知识
  18. 一个博士(机器学习方向)关于发论文的几点忠告
  19. 猿创征文|Python3,10分钟写了一个WIFI 万(破) 能 (解) 钥 (神) 匙 (器),YYDS。
  20. 电子科技大学830数字图像处理补充题目

热门文章

  1. shell获取当前目录名的几种方法
  2. armbian n1 桌面_Armbian5.89桌面版安装OpenMediaVault教程
  3. HolderView vs ViewHolder实例
  4. [2018.10.20 T1] 蛋糕
  5. [2018.10.15 T3] 数列
  6. BZOJ3450 Easy
  7. TypeError: Cannot read property ‘forceUpdate‘ of undefined
  8. 慕课网仿去哪儿项目笔记--(三)-城市页面制作
  9. python关于csv的查询系统_使用Python对csv文件操作
  10. qt 定义一个长度的数组_6.8 C++字符数组