二、GLKit 及 常见API

简介: GLKit框架的设计目的是为了简化基于OpenGL/OpenGL ES的应用开发,加快了OpenGL/OpenGL ES应用程序开发

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

微信图片_20220514155421.png


GLKit呈现图片过程


通过GLKit展示图片,主要有以下三个步骤


  • GLKView的创建和配置
  • 使用GLKView对象绘制图形,并存储到帧缓存区
  • 从帧缓存区中读取数据,显示到屏幕上


GLKit 常用API


GLKit 纹理加载


GLKTextureInfo 创建OpenGL 纹理信息


常见的属性如表所示

微信图片_20220514155633.png


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


  • 初始化


微信图片_20220514155744.png

  • 从文件中加载处理

微信图片_20220514155844.png

  • 从URL加载处理

微信图片_20220514160003.png


  • 从内存中表示创建纹理

微信图片_20220514160116.png

  • 从CGImages创建纹理

微信图片_20220514160219.png

  • 从URL加载多维创建纹理

微信图片_20220514160313.png

  • 从文件加载多维数据创建纹理

微信图片_20220514160416.png

GLKit OpenGL ES视图渲染 API


GLKView


使⽤OpenGL ES 绘制内容的视图默认实现,常用API及属性如下所示


  • 初始化视图

微信图片_20220514160549.png

  • 设置代理

微信图片_20220514160843.png

  • 配置帧缓存区对象

微信图片_20220514161051.png

帧缓存区属性

微信图片_20220514161209.png

  • 绘制视图的内容

微信图片_20220514161312.png

微信图片_20220514161406.png

  • 删除视图FrameBuffer对象

微信图片_20220514161547.png


GLKViewDelegate ⽤于GLKView 对象回调方法


  • 绘制视图的内容(必须实现代理!!!!)

微信图片_20220514161710.png


GLKViewController


管理OpenGL ES 渲染循环的视图控制器,常用的API如下


  • 更新

微信图片_20220514161844.png

  • 配置帧速率

微信图片_20220514162018.png

  • 配置GLKViewDelegate代理

微信图片_20220514162202.png


  • 控制帧更新


resumeOnDidBecomeActive 布尔值,当前程序变为活动状态时视图控制是否⾃自动恢复呈现循环

微信图片_20220514162327.png

  • 获取有关View 更新信息

微信图片_20220514162443.png

**GLKViewControllerDelegate **

渲染循环回调⽅方法


  • 处理理更更新事件


微信图片_20220514162615.png

  • 暂停/恢复通知
回调方法 说明

- glkViewController : willPause:

在渲染循环暂停或恢复之前调⽤

GLKBaseEffect


一种简单光照/着色系统,⽤于基于着⾊器的OpenGL渲染


  • 命名Effect
属性 说明
label 给Effect(效果)命名
  • 配置模型视图转换
属性 说明
transform 绑定效果时应⽤于顶点数据的模型视图,投影和纹理变换
  • 配置光照效果
属性 说明
lightingType 用于计算每个片段的光照策略,GLKLightingType

微信图片_20220514163302.png


  • 配置光照

微信图片_20220514163356.png

  • 配置纹理

微信图片_20220514163429.png

  • 配置雾化
属性 说明
fog 应⽤于场景的雾属性
  • 配置颜色信息

微信图片_20220514163700.png

  • 准备绘制效果
方法 说明
- prepareToDraw 准备渲染效果


注意

1、GLKit中最多只有3个光照,2个纹理

2、常量颜色:黑色

相关文章
|
3月前
|
安全 API 网络安全
浅谈API安全
浅谈API安全
浅谈API安全
|
6月前
|
XML API 数据库
API介绍
API介绍
83 1
|
6月前
|
API
|
7月前
|
安全 API
常用API
常用API接口分享
57 0
|
7月前
|
API
7.3 通过API枚举进程
首先实现枚举当前系统中所有进程信息,枚举该进程的核心点在于使用`CreateToolhelp32Snapshot()`函数,该函数用于创建系统进程和线程快照,它可以捕获当前系统中进程和线程相关的信息(如PID、线程数量、线程ID等),在对这些信息进行处理后,可以获得很多有用的数据,如当前系统中所有正在执行的进程的信息列表,以及每个进程各自的详细信息(如CPU、内存占用量等)。
37 1
|
8月前
|
DataWorks API
CreateQualityRelativeNode API
CreateQualityRelativeNode API
40 1
|
9月前
|
数据采集 人工智能 JSON
这可能是我用过最“强大”的API
早前我也推荐过豆瓣的 API,不过豆瓣现已把开发者页面下线,无法查看具体接口说明,之后会不会对外关闭也很难说了。Marvel API 相比豆瓣 API 来说要复杂一些,主要是权限认证的部分。另外,在使用时还有一些要求
|
10月前
|
SQL 缓存 Java
|
10月前
|
机器学习/深度学习 Unix Linux
为什么需要API,什么是api
为什么需要API,什么是api
|
10月前
|
XML 存储 缓存
什么是 API?
什么是 API?