GLKit实战 第01话 引言

@Daniate  January 28, 2020

GLKit是什么?

本文首发于Daniate的个人网站,文章链接:https://daniate.com/2020/01/28/162.html

在iOS 5之前,开发OpenGL ES程序,需要编写大量的底层代码,极大影响开发效率。为了加快OpenGL ES应用程序的开发,自iOS 5起,苹果提供了一个名为GLKit的框架。

当创建新的基于着色器的应用程序时,或者对已存在的、且依赖于固定渲染管线(早期版本OpenGL ES所提供的功能)的应用程序进行移植时,GLKit所提供的函数及类,可以大幅减少工作量。

GLKit有哪些特性?

GLKit提供的功能,可以分为4个方面:

  • 纹理加载。可以轻松加载不同来源的纹理,亦可进行后台异步加载。
  • 数学库。提供常用的向量、四元组、矩阵操作。其实现已经被充分优化,可以提供极好的性能。
  • 特效。为常见的着色器特效提供标准实现。当配置特效并关联顶点数据时,特效会创建并加载合适的着色器。
  • 视图及视图控制器。提供OpenGL ES视图及相应视图控制器的标准实现。为创建OpenGL ES应用程序减少了大量代码。

GLKit内置的3种特效

  • GLKBaseEffect。实现了OpenGL ES 1.1阴影及光照模型的一个重要子集。
  • GLKReflectionMapEffect。扩展了GLKBaseEffect,支持反射贴图。
  • GLKSkyboxEffect。实现了天空盒特效。

为什么还要讲GLKit?

这个问题,可以扩大为“为什么还要讲OpenGL或OpenGL ES?”。

早在2014年,苹果就推出了Metal,在WWDC 2018上,苹果表示将抛弃OpenGL,具体情况如下:

OpenGL APIs are deprecated.png

苹果都这么用力在推Metal,为什么还要学OpenGL或OpenGL ES呢?

  • 首先,OpenGL、OpenGL ES是跨平台的,Metal只能在苹果平台上使用。
  • 其次,目前多数的移动端图形应用,使用的依旧是OpenGL ES。
  • 最后,模型视图矩阵、投影矩阵、图形渲染管线、着色器等相关知识,是通用的,并不影响其他图形框架(Metal、Vulkan、DirectX)的学习,一旦掌握了这些通用知识,也能够轻松驾驭其他图形框架。

知识共享许可协议
本作品由Daniate采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。


添加新评论