OpenGL ES(二) GLKit

苹果官方GLKit文档

GLKit 框架的设计目标是为了简化基于OpenGL/OpenGL ES的应用开发。它的出现加快了OpenGL ES或OpenGL应⽤用程序开发。

GLKit功能

  • 提供高性能的数学运算:提供常用的向量,四元数和矩阵运算。
  • 加载纹理:允许加载各种纹理,且可以后台加载,通过GLKTextureLoader类来加载;
  • 提供常见的着色器(effect):包含3种着色器GLKBaseEffectGLKReflectionMapEffectGLKSkyboxEffect
  • 提供视图视图以及视图控制器:GLKViewGLKViewController

GLKView

提供绘制场所,继承自UIView

GLKViewController

⽤于绘制视图内容的管理与呈现,继承自UIViewController

使用GLKit视图呈现OpenGL ES 内容

图片来源于网络

GLKit常用API

GLKit 纹理加载

GLKTextureInfo创建OpenGL纹理信息

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

GLTextureLoader简化从各种资源⽂件中加载纹理

  • 初始化
    - initWithSharegroup: 初始化⼀个新的纹理加载到对象中
    - initWithShareContext: 初始化⼀个新的纹理加载对象

  • 从⽂文件中加载
    + textureWithContentsOfFile:options:errer: 从文件加载2D纹理图像并从数据中创建新的纹理
    - textureWithContentsOfFile:options:queue:completionHandler: 从文件中异步加载2D纹理图像,并根据数据创建新纹理

  • 从URL加载纹理
    - textureWithContentsOfURL:options:error:从URL加载2D纹理图像并从数据创建新纹理
    - textureWithContentsOfURL:options:queue:completionHandler:从URL异步加载2D纹理图像,并根据数据创建新纹理.

  • 从内存中创建纹理
    + textureWithContentsOfData:options:errer:从内存空间加载2D纹理图像,并根据数据创建新纹理
    - textureWithContentsOfData:options:queue:completionHandler:从内存空间异步加载2D纹理图像,并从数据中创建新纹理

  • 从CGImages创建纹理
    - textureWithCGImage:options:error:从Quartz图像加载2D纹理图像并创建新纹理
    - textureWithCGImage:options:queue:completionHandler:从Quartz图像异步加载2D纹理图像,并创建新纹理

  • 从URL加载多维创建纹理
    + cabeMapWithContentsOfURL:options:errer:从单个URL加载⽴方体贴图纹理图像,并根据数据创建新纹理
    - cabeMapWithContentsOfURL:options:queue:completionHandler:从单个URL异步加载⽴方体贴图纹理图像,并根据数据创建新纹理

  • 从⽂件加载多维数据创建纹理理
    + cubeMapWithContentsOfFile:options:errer:从单个文件加载⽴方体贴图纹理对象,并从数据中创建新纹理
    - cubeMapWithContentsOfFile:options:queue:completionHandler:从单个文件异步加载⽴方体贴图纹理对象,并从数据中创建新纹理
    + cubeMapWithContentsOfFiles:options:errer:从⼀系列文件中加载⽴方体贴图纹理图像,并从数据中创建新纹理
    - cubeMapWithContentsOfFiles:options:options:queue:completionHandler:从一系列文件异步加载立方体贴图纹理图像,并从数据中创建新纹理

视图渲染

  • 初始化视图
    - initWithFrame:context

  • 设置代理
    delegate

  • 配置缓冲区对象

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

  • 绘制视图内容
    - glkView:drawInRect: 绘制视图内容 (必须实现的代理GLKViewDelegate)

  • 更新
    - (void)update 更新视图内容
    - (void)glkViewControllerUpdate:

  • 配置帧速率

属性 说明
preferredFramesPerSecond 视图控制器调用视图以及更新视图内容的速率
framesPerSencond 视图控制器调用视图以及更新其内容的实际速率
  • 配置GLKViewController代理
    delegate 视图控制器的代理

  • 控制帧更新

属性 说明
paused 视图控制器调用视图以及更新视图内容的速率
pausedOnWillResignActive 布尔值,当前程序重新激活活动状态时视图控制器是否⾃动暂停渲染循环
resumeOnDidBecomeActive 布尔值,当前程序变为活动状态时视图控制器是否自动恢复呈现循环
  • 获取有关View更新信息
属性 说明
frameDisplayed 视图控制器自创建以来发送的帧更新数
timeSinceFirstResume ⾃视图控制器第一次恢复发送更新事件以来经过的时间量
timeSinceLastResume 自上次视图控制器恢复发送更新事件以来更新的时间量
timeSinceLastUpdate 自上次视图控制器调⽤委托⽅法以及经过的时间量
timeSinceLastDraw ⾃上次视图控制器调⽤视图display方法以来经过的时间量
  • 处理更新事件
    - glkViewControllerUpdate: 在显示每个帧之前调⽤

  • 暂停/恢复通知
    - glkViewController : willPause: 在渲染循环暂停或恢复之前调⽤

GLKBaseEffect

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

  • 命名Effect
    label 给Effect(效果)命名

  • 配置模型视图转换
    transform 绑定效果时应用于顶点数据的模型视图、投影和纹理变换

  • 配置光照效果
    lightingType 用于计算每个片段的光照策略,GLKLightingType

GLKLightingType 说明
GLKLightingTypePerVertex 表示在三角形中每个顶点执⾏光照计算,然后在三角形中进⾏插值
GLKLightingTypePerPixel 表示光照计算的输入在三角形内插⼊,并且在每个片段执⾏光照计算
  • 配置光照
属性 说明
lightModelTwoSided 布尔值,表示为基元的两侧计算光照
material 计算渲染图元光照使⽤用的材质属性
lightModelAmbientColor 环境颜色,应用效果渲染的所有图元
light0 场景中第一个光照属性
light1 场景中第二个光照属性
light2 场景中第三个光照属性
  • 配置纹理
属性 说明
texture2d0 第一个纹理属性
texture2d1 第二个纹理属性
textureOrder 纹理应用于渲染图元的顺序
  • 配置雾化
    fog 应用于场景的雾属性

  • 配置颜色信息

属性 说明
colorMaterialEnable 布尔值,表示计算光照与材质交互时是否使用颜色顶点属性
useConstantColor 布尔值,指示是否使用常量颜色
constantColor 不提供每个顶点颜色数据时使用常量颜色
  • 准备绘制效果
    - prepareToDraw 准备渲染效果

你可能感兴趣的:(OpenGL ES(二) GLKit)