先了解GLKit框架前,先附上GLKit的苹果官方文档GLKitAPI
GLKit功能
1、提供高性能的数学运算(Math libraries):提供常用的向量,四元数和矩阵运算。
2、加载纹理(Texture loading):允许加载各种纹理,且可以后台加载,通过GLKTextureLoader类来加载
3、提供常见的着色器(effect):包含以下3种着色器
GLKBaseEffect
GLKReflectionMapEffect
GLKSkyboxEffect
4、提供视图视图以及视图控制器:GLKView和GLKViewController
5、GLKView:提供绘制场所,继承自UIView
6、GLKViewController:⽤于绘制视图内容的管理与呈现,继承自UIViewController)

顶点着⾊器 :
- 着⾊器程序—描述顶点上执⾏操作的顶点着⾊器程序源代码/可执⾏⽂件
2.顶点着⾊器输⼊(属性) — ⽤顶点数组提供每个顶点的数据
3.统⼀变量(uniform)—顶点/⽚元着⾊器使⽤的不变数据 - 采样器—代表顶点着⾊器使⽤纹理的特殊统⼀变量类型
顶点着色器的业务:
1、矩阵变换位置
2、计算光照公式生成逐顶点颜色
3、生成/变换纹理坐标
attribute vec4 position;
attribute vec2 textCoordinate;
uniform mat4 rotateMatrix;
varying lowp vec2 varyTextCoord;
void main()
{
varyTextCoord = textCoordinate;
vec4 vPos = position;
vPos = vPos * rotateMatrix;
gl_Position = vPos;
}
片元着色器
1、着色器程序:描述片段上执行操作的片元着色器程序源代码/可执行文件
2、输入变量:光栅化单元用插值为每一片段生成的顶点着色器输出
3、 统一变量:顶点/片元着色器使用的不变数据
4、采样器:代表片元着色器使用纹理的特殊统一变量类型
片元着色器的业务
1、计算颜色
2、获取纹理值
3、往像素点中填充颜色值
varying lowp vec2 varyTextCoord;
uniform sampler2D colorMap;
void main()
{
gl_FragColor = texture2D(colorMap, varyTextCoord);
}

GLKit常见的API
1、初始化
- initWithSharegroup: 初始化⼀个新的纹理加载到对象中
- initWithShareContext: 初始化⼀个新的纹理加载对象
2、从文件中加载处理
+ textureWithContentsOfFile:options:errer: 从⽂件加载2D纹理图像并从数据中
创建新的纹理
- textureWithContentsOfFile:options:queue:completionHandler: 从⽂件中异步
加载2D纹理图像,并根据数据创建新纹理GLTextureLoader 简化从各种资源⽂件中加载纹理.
3、从URL加载纹理
- textureWithContentsOfURL:options:error: 从URL 加载2D纹理图像并从数据创
建新纹理
- textureWithContentsOfURL:options:queue:completionHandler: 从URL异步
加载2D纹理图像,并根据数据创建新纹理.
4、从内存中表示创建纹理
+ textureWithContentsOfData:options:errer: 从内存空间加载2D纹理图像,并根
据数据创建新纹理
- textureWithContentsOfData:options:queue:completionHandler:从内存空间
异步加载2D纹理图像,并从数据中创建新纹理GLTextureLoader 简化从各种资源⽂件中加载纹理.
5、从CGImages创建纹理
- textureWithCGImage:options:error: 从Quartz图像 加载2D纹理图像并从数据创建新纹理
- textureWithCGImage:options:queue:completionHandler: 从Quartz图像异步
加载2D纹理图像,并根据数据创建新纹理.
6、从URL加载多维创建纹理
+ cabeMapWithContentsOfURL:options:errer: 从单个URL加载⽴⽅体贴图纹理
图像,并根据数据创建新纹理
- cabeMapWithContentsOfURL:options:queue:completionHandler:从单个
URL异步加载⽴⽅体贴图纹理图像,并根据数据创建新纹理GLTextureLoader 简化从各种资源⽂件中加载纹理.
7、从⽂件加载多维数据创建纹理
+ cubeMapWithContentsOfFile:options:errer: 从单个⽂件加载⽴⽅体贴图纹理
对象,并从数据中创建新纹理
- cubeMapWithContentsOfFile:options:queue:completionHandler:从单个⽂件
异步加载⽴⽅体贴图纹理对象,并从数据中创建新纹理
+ cubeMapWithContentsOfFiles:options:errer: 从⼀系列⽂件中加载⽴⽅体贴图
纹理图像,并从数据总创建新纹理
- cubeMapWithContentsOfFiles:options:options:queue:completionHandler:
从⼀系列⽂件异步加载⽴⽅体贴图纹理图像,并从数据中创建新纹理GLTextureLoader 简化从各种资源⽂件中加载纹理.
GLKView 使⽤OpenGL ES 绘制内容的视图默认实现
初始化
- initWithFrame:context: 初始化新视图
代理
delegate 视图的代理
配置帧缓存区对象
drawableColorFormat 颜⾊渲染缓存区格式
drawableDepthFormat 深度渲染缓存区格式
drawableStencilFormat 模板渲染缓存区的格式
drawableMultisample 多重采样缓存区的格式
帧缓存区属性
drawableHeight 底层缓存区对象的⾼度(以像素为单位)
drawableWidth 底层缓存区对象的宽度(以像素为单位)
绘制视图的内容
context 绘制视图内容时使⽤的OpenGL ES 上下⽂
•- bindDrawable 将底层FrameBuffer 对象绑定到OpenGL ES
enableSetNeedsDisplay 布尔值,指定视图是否响应使得视图内容⽆效的消息
•- display ⽴即重绘视图内容
snapshot 绘制视图内容并将其作为新图像对象返回
删除视图FrameBuffer对象
• - deleteDrawable 删除与视图关联的可绘制对象
绘制视图的内容
• - glkView:drawInRect: 绘制视图内容 (必须实现代理)
GLKViewDelegate ⽤于GLKView 对象回调⽅法
更新
• - (void) update 更新视图内容
• - (void) glkViewControllerUpdate:
配置帧速率
• preferredFramesPerSecond 视图控制器调⽤视图以及更新视图内容的速率
• framesPerSencond 视图控制器调⽤视图以及更新其内容的实际速率
配置GLKViewController 代理
delegate 视图控制器的代理
网友评论