二、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、常量颜色:黑色

相关文章
|
2月前
|
监控 API 数据库
什么是API?
API是应用程序编程接口(Application Programming Interface)的缩写,它定义了软件组件之间如何相互通信。API充当不同软件间的桥梁,允许应用程序使用另一个应用程序的功能或数据。
92 4
|
6月前
|
SQL 前端开发 测试技术
什么是 API ?
API 即应用程序接口(API:Application Program Interface),应用程序接口是一组定义、程序及协议的集合,通过 API 接口实现计算机软件之间的相互通信。
127 2
|
5月前
|
消息中间件 API
SofaMQ一些常用的API
SofaMQ一些常用的API
283 1
|
6月前
|
前端开发 程序员 API
什么是API?谈对API的理解
什么是API?谈对API的理解
139 1
|
DataWorks API
CreateQualityRelativeNode API
CreateQualityRelativeNode API
63 1
|
安全 API
常用API
常用API接口分享
87 0
|
存储 SQL 监控
浅谈API安全的应用
API安全性已日渐成为了网络应用方面的主要技术需求之一。开发人员需要进一步加大对于API业务模型、分析能力、技术蓝图、以及合规性与标准化方面的深入研究与开发。 通过自动化、多样化的API网络攻击,黑客不仅可以达到消耗系统资源、中断服务的目的,还可以通过逆向工程,掌握 API 应用、部署情况,并监听未加密数据传输,窃取企业数据。 安全架构设计有很多的安全设计原则,比如公开设计原则、权限最小化、开放最小化、默认不信任等。所以在API安全设计过程中也可借鉴参考这些安全性原则。
|
数据采集 人工智能 JSON
这可能是我用过最“强大”的API
早前我也推荐过豆瓣的 API,不过豆瓣现已把开发者页面下线,无法查看具体接口说明,之后会不会对外关闭也很难说了。Marvel API 相比豆瓣 API 来说要复杂一些,主要是权限认证的部分。另外,在使用时还有一些要求
|
机器学习/深度学习 Unix Linux
为什么需要API,什么是api
为什么需要API,什么是api