美文网首页
GLKit常用API

GLKit常用API

作者: windy_3c22 | 来源:发表于2020-07-29 17:00 被阅读0次

1、GLKit 框架概述

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

2、GLKit功能

  • 1.加载纹理
  • 2.提供高性能的数学运算
  • 3.提供常见着色器
  • 4.提供视图(GLKView)及视图控制器(GLKViewController)
    • GLKView:提供绘制场所(View)
    • GLKViewController:扩展于标准的UIKit 设计模式. ⽤用于绘制视图内容的管理理与呈现

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纹理图像,并根据数据创建新纹理
  • 从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: 从⼀系列文件异步加载⽴方体贴图纹理图像,并从数据中创建新纹理

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 ⽴即重绘视图内容
  • 删除视图FrameBuffer对象
方法 说明
- deleteDrawable 删除与视图关联的可绘制对象

GLKViewDelegate用于GLKView 对象回调⽅法

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

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

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

GLKViewControllerDelegate 渲染循环回调⽅法

  • 处理更新事件
方法 说明
-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 准备渲染效果

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

相关文章

  • OpenGL ES GLKit 常用API解析

    OpenGL ES GLKit 常用API解析 前言 GLKit 框架的设计⽬目标是为了了简化基于OpenGL /...

  • GLKit常用API

    GLKit常用API OpenGL ES(OpenGL for Embedded Systems)是以手持和嵌入式...

  • GLKIT常用API

    GLKIT框架简述 GLKit框架的设计⽬标是为了简化基于OpenGL / OpenGL ES的应⽤开发。它的出...

  • GLKit常用API

    1、GLKit 框架概述 GLKit框架的设计目标是为了简化基于OpenGL / OpenGL ES的应用开发。它...

  • GLKit 􏰼􏰜常用API

    前言 GLKit 是为了加速基于OpenGL或OpenGl ES应用开发而设计出来的,它简化了基于着色器的应用程序...

  • GLKit常用API解析

    GLKTextureInfo 创建OpenGL纹理信息 name: OpenGL上下文中纹理名称 target: ...

  • GLKit 及常用 API

    GLKit GLKit 官方文档 GLKit 框架的设计目标是为了简化基于 OpenGL/OpenGL ES 的应...

  • GLKit 常用API 解析

    GLKit 简介 GLKit是苹果iOS 5引入的一个为简化OpenGL ES的使用的框架,它为OpenGL ES...

  • OpenGL ES GLKit 常用API

    一、GLKit框架概述 GLKit 框架的设计目标是为了简化并加快基于OpenGL / OpenGL ES 的应⽤...

  • OpenGL ES GLKit常用API

    前言 GLKit框架的设计目标是为了简化基于OpenGL/OpenGL ES的应用开发,它的出现加快了OpenGL...

网友评论

      本文标题:GLKit常用API

      本文链接:https://www.haomeiwen.com/subject/lomhrktx.html