GLKit常用API

2020-07-29  本文已影响0人  windy_3c22

1、GLKit 框架概述

GLKit框架的设计目标是为了简化基于OpenGL / OpenGL ES的应用开发。它的出现加快OpenGL ES或OpenGL应用程序开发。 使用数学库,背景纹理加载,预先创建的着色器效果,以及标准视图和视图控制器来实现渲染循环。
GLKit框架提供了功能和类,可以减少创建新的基于着⾊器的应⽤程序所需的⼯作量,或者支持依赖早期版本的OpenGL ES或OpenGL提供的固定函数顶点或片段处理的现有应用程序。

2、GLKit功能

3、使用GLKit视图呈现OpenGL ES 内容

苹果官方GLKit呈现视图过程图

GLKit呈现视图过程

3、GLKit 常用API

GLKit 纹理加载
1、GLKTextureInfo 创建OpenGL 纹理信息

属性 说明
name OpenGL 上下文中纹理名称
target 纹理绑定的目标
height 加载的纹理高度
width 加载的纹理宽度
textureOrigin 加载纹理中的原点位置
alphaState 加载纹理中alpha分量状态
containsMipmaps 布尔值,加载的纹理是否包含mip贴图

2、GLTextureLoader 简化从各种资源文件中加载纹理

方法 说明
- initWithSharegroup: 初始化一个新的纹理加载到对象中
- initWithShareContext: 初始化⼀个新的纹理加载对象
方法 说明
+ textureWithContentsOfFile:options:errer: 从文件加载2D纹理图像并从数据中创建新的纹理
- textureWithContentsOfFile:options:queue:completionHandler: 从⽂件中异步加载2D纹理图像,并根据数据创建新纹理
方法 说明
- textureWithContentsOfURL: options: error: 从URL 加载2D纹理图像并从数据创建新纹理
- textureWithContentsOfURL: options: queue: completionHandler: 从URL异步加载2D纹理图像,并根据数据创建新纹理
方法 说明
+ textureWithContentsOfData: options: errer: 从内存空间加载2D纹理图像,并根据数据创建新纹理
- textureWithContentsOfData: options: queue: completionHandler: 从内存空间异步加载2D纹理图像,并从数据中创建新纹理
方法 说明
- textureWithCGImage: options: error: 从Quartz图像加载2D纹理图像并从数据创建新纹理
- textureWithCGImage: options: queue: completionHandler: 从Quartz图像异步加载2D纹理图像,并根据数据创建新纹理
方法 说明
+ cabeMapWithContentsOfURL: options: errer: 从单个URL加载⽴方体贴图纹理图像,并根据数据创建新纹理
- cabeMapWithContentsOfURL: options: queue: completionHandler: 从单个URL异步加载⽴方体贴图纹理图像,并根据数据创建新纹理
方法 说明
+ cubeMapWithContentsOfFile: options: errer: 从单个文件加载⽴⽅体贴图纹理对象,并从数据中创建新纹理
- cubeMapWithContentsOfFile: options: queue: completionHandler: 从单个⽂件异步加载⽴方体贴图纹理对象,并从数据中创建新纹理
+ cubeMapWithContentsOfFiles: options: errer: 从⼀系列⽂件中加载⽴方体贴图纹理图像,并从数据总创建新纹理
- cubeMapWithContentsOfFiles: options: options: queue: completionHandler: 从⼀系列文件异步加载⽴方体贴图纹理图像,并从数据中创建新纹理

3、GLKit OpenGL ES 视图渲染
GLKView 使⽤OpenGL ES 绘制内容的视图默认实现

方法 说明
- initWithFrame:context: 初始化新视图
属性 说明
delegate 视图的代理
属性 说明
drawableColorFormat 颜⾊渲染缓存区格式
drawableDepthFormat 深度渲染缓存区格式
drawableStencilFormat 模板渲染缓存区的格式
drawableMultisample 多重采样缓存区的格式
属性 说明
drawableHeight 底层缓存区对象的⾼高度(以像素为单位)
drawableWidth 底层缓存区对象的宽度(以像素为单位)
属性 说明
context 绘制视图内容时使用的OpenGL ES 上下文
enableSetNeedsDisplay 布尔值,指定视图是否响应使得视图内容⽆效的消息
snapshot 绘制视图内容并将其作为新图像对象返回
方法 说明
- bindDrawable 将底层FrameBuffer 对象绑定到OpenGL ES
- display ⽴即重绘视图内容
方法 说明
- deleteDrawable 删除与视图关联的可绘制对象

GLKViewDelegate用于GLKView 对象回调⽅法

方法 说明
- glkView: drawInRect: 绘制视图内容 (必须实现代理)

GLKViewController 管理OpenGL ES 渲染循环的视图控制器

方法 说明
- (void) update 更新视图内容
- (void) glkViewControllerUpdate: 更新视图控制器显示内容
属性 说明
preferredFramesPerSecond 视图控制器调用视图以及更新视图内容的速率
framesPerSencond 视图控制器调用视图以及更新其内容的实际速率
属性 说明
delegate 视图控制器代理
属性 说明
paused 布尔值,渲染循环是否已暂停
pausedOnWillResignActive 布尔值,当前程序重新激活活动状态时视图控制器是否⾃动暂停渲染循环
resumeOnDidBecomeActive 布尔值,当前程序变为活动状态时视图控制是否⾃动恢复呈现循环
属性 说明
frameDisplayed 视图控制器自创建以来发送的帧更新数
timeSinceFirstResume ⾃视图控制器第一次恢复发送更新事件以来经过的时间量
timeSinceLastResume ⾃上次视图控制器恢复发送更新事件以来更新的时间量
timeSinceLastUpdate 自上次视图控制器调用委托方法以及经过的时间量glkViewControllerUpdate:
timeSinceLastDraw 自上次视图控制器调用视图display方法以来经过的时间量

GLKViewControllerDelegate 渲染循环回调⽅法

方法 说明
-glkViewControllerUpdate: 在显示每个帧之前调用
方法 说明
- glkViewController : willPause: 在渲染循环暂停或恢复之前调用

GLKBaseEffect ⼀种简单光照/着⾊系统,⽤于基于着⾊器OpenGL 渲染

属性 说明
label 给Effect(效果)命名
属性 说明
transform 绑定效果时应⽤于顶点数据的模型视图,投影和纹理变换
属性 说明
lightingType 用于计算每个片段的光照策略,GLKLightingType
GLKLightingType 说明
GLKLightingTypePerVertex 表示在三角形中每个顶点执⾏光照计算,然后在三角形进⾏插值
GLKLightingTypePerPixel 表示光照计算的输⼊在三角形内插入,并且在每个片段执行光照计算
属性 说明
lightModelTwoSided 布尔值,表示为基元的两侧计算光照
material 计算渲染图元光照使⽤的材质属性
lightModelAmbientColor 环境颜⾊,应⽤效果渲染的所有图元.
light0 场景中第⼀个光照属性
light1 场景中第⼆个光照属性
light2 场景中第三个光照属性
属性 说明
fog 应⽤于场景的雾属性
属性 说明
colorMaterialEnable 布尔值,表示计算光照与材质交互时是否使⽤颜⾊顶点属性
useConstantColor 布尔值,指示是否使用常量颜⾊
constantColor 不提供每个顶点颜色数据时使⽤常量颜⾊
方法 说明
- prepareToDraw 准备渲染效果

GLKit中最多有3个光照,2个纹理。常量颜色为黑色

上一篇 下一篇

猜你喜欢

热点阅读