简介
OpenGL
OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口API。这个接口由近350个不同的函数调用组成,用来绘制从简单的图形比特到复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。
OpenGL ES
OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。
由于OpenGL API规模庞大且复杂,OpenGL ES的目标是创建适合于嵌入式设备,删除任何冗余的API,同时引入新功能来处理嵌入式设备的特定限制,例如,为了降低电源消耗,提高着色器的性能。
WebGL
WebGL(全称:Web Graphics Library)是一种3D绘图协议。WebGL(Web图形库)是一个JavaScript API,可在任何兼容的Web浏览器中渲染高性能的交互式3D和2D图形,而无需使用插件。WebGL通过引入一个与OpenGL ES 2.0非常一致的API来做到这一点,该API可以在HTML5 <canvas>
元素可被用来通过JavaScript(Canvas API 或 WebGL API)绘制图形及图形动画。")元素中使用。 这种一致性使API可以利用用户设备提供的硬件图形加速。
WebGL免费开放,于2010年公开发布,主要有两个作用。第一,它通过HTML脚本本身实现Web交互式三维动画的制作,无需任何浏览器插件支持;第二,它利用底层的图形硬件加速功能进行的图形渲染,是通过统一的、标准的、跨平台的OpenGL接口实现的。
GLUT
GLUT代表OpenGL应用工具包,英文全称为OpenGL Utility Toolkit,是一个和窗口系统无关的软件包,它由Mark Kilgard在SGI时写的。作为AUX库的功能更强大的替代品,用于隐藏不同窗口系统API的复杂性。
GLUT是专为构建中小型OpenGL程序。虽然GLUT是适合学习OpenGL和开发简单的OpenGL应用程序。GLUT并不是一个功能全面的工具包所以大型应用程序需要复杂的用户界面最好使用本机窗口系统工具包。所以GLUT是简单的、容易的、小的。
GLUT中有C,C + +(C一样),FORTRAN和Ada编程绑定。GLUT的源代码分布是移植到几乎所有的OpenGL实现和平台。
在Mac平台上GLUT在10.9以后就不建议用了,而用GLKit替代
GLKit
GLKit是Apple公司对OpenGL和OpenGL ES进行封装的一个框架,其设计目标是为了简化基于OpenGL或者OpenGL ES的应用开发。它的出现加快OpenGL ES或OpenGL应用程序开发。 使用数学库,背景纹理加载,预先创建的着色器效果,以及标准视图和视图控制器来实现渲染循环。
所以GLKit不仅支持iOS,还支持MacOS,让开发更简单。
可能是为了推广Apple自身的Metal,iOS13开始,Apple就不推荐使用GLKit了。
GLSL
GLSL(OpenGL着色语言OpenGL Shading Language)语法跟C语言很类似,在可编程管线中我们必须要纯手写顶点和片源着色器,这里就要求必须使用GLSL。