GLKit 简述
先了解GLKit框架前,先附上GLKit的苹果官方文档GLKitAPI
GLKit框架的设计目的是为了简化基于OpenGL/OpenGL ES的应用开发,加快了OpenGL/OpenGL ES应用程序开发
GLKit功能
- 提供高性能的数学运算(Math libraries):提供常用的向量,四元数和矩阵运算。
- 加载纹理(Texture loading):允许加载各种纹理,且可以后台加载,通过
GLKTextureLoader
类来加载 - 提供常见的着色器(effect):包含以下3种着色器
- GLKBaseEffect
- GLKReflectionMapEffect
- GLKSkyboxEffect
- 提供视图视图以及视图控制器:GLKView和GLKViewController
- GLKView:提供绘制场所,继承自UIView
- GLKViewController:⽤于绘制视图内容的管理与呈现,继承自UIViewController)
使用GLKit视图呈现OpenGL ES 内容
下图来自Apple官方文档Drawing with OpenGL ES and GLKit
GLKit呈现图片过程
通过GLKit展示图片,主要有以下三个步骤
- GLKView的创建和配置
- 使用GLKView对象绘制图形,并存储到帧缓存区
- 从帧缓存区中读取数据,显示到屏幕上
GLKit 常用API
GLKit 纹理加载
GLKTextureInfo 创建OpenGL 纹理信息
常见的属性如表所示
GLTextureLoader 简化从各种资源⽂件中加载纹理
- 初始化
- 从文件中加载处理
- 从URL加载处理
- 从内存中表示创建纹理
- 从CGImages创建纹理
- 从URL加载多维创建纹理
- 从文件加载多维数据创建纹理
GLKit OpenGL ES视图渲染 API
GLKView
使⽤OpenGL ES 绘制内容的视图默认实现,常用API及属性如下所示
- 初始化视图
- 设置代理
- 配置帧缓存区对象
帧缓存区属性
- 绘制视图的内容
- 删除视图FrameBuffer对象
GLKViewDelegate ⽤于GLKView 对象回调方法
- 绘制视图的内容(必须实现代理!!!!)
GLKViewController
管理OpenGL ES 渲染循环的视图控制器,常用的API如下
- 更新
- 配置帧速率
- 配置GLKViewDelegate代理
- 控制帧更新
resumeOnDidBecomeActive 布尔值,当前程序变为活动状态时视图控制是否⾃自动恢复呈现循环
- 获取有关View 更新信息
**GLKViewControllerDelegate **
渲染循环回调⽅方法
- 处理理更更新事件
- 暂停/恢复通知
回调方法 | 说明 |
- glkViewController : willPause: |
在渲染循环暂停或恢复之前调⽤ |
GLKBaseEffect
一种简单光照/着色系统,⽤于基于着⾊器的OpenGL渲染
- 命名Effect
属性 | 说明 |
label | 给Effect(效果)命名 |
- 配置模型视图转换
属性 | 说明 |
transform | 绑定效果时应⽤于顶点数据的模型视图,投影和纹理变换 |
- 配置光照效果
属性 | 说明 |
lightingType | 用于计算每个片段的光照策略,GLKLightingType |
- 配置光照
- 配置纹理
- 配置雾化
属性 | 说明 |
fog | 应⽤于场景的雾属性 |
- 配置颜色信息
- 准备绘制效果
方法 | 说明 |
- prepareToDraw | 准备渲染效果 |
注意
1、GLKit中最多只有3个光照,2个纹理
2、常量颜色:黑色