OpenGL ES GLKit 常用API解析
前言
GLKit 框架的設(shè)計(jì)?目標(biāo)是為了了簡(jiǎn)化基于OpenGL / OpenGL ES 的應(yīng)用開發(fā). 。它的出現(xiàn)加快OpenGL ES或OpenGL應(yīng)?用程序開發(fā)氛堕。 使用數(shù)學(xué)庫浓体,背景紋理加載瘾带,預(yù)先創(chuàng)建的著?器效果,以及標(biāo)準(zhǔn)視圖和視圖控制器來實(shí)現(xiàn)渲染循環(huán)。
官方鏈接 https://developer.apple.com/documentation/glkit/glkview
GLKit功能
1加載紋理
2提供高性能的數(shù)學(xué)運(yùn)算
3 提供常見的著色器
4 提供視圖以及視圖控制器
API解析
GLKTextureInfo 創(chuàng)建OpenGL 紋理信息.
GLuint name; openGL 上下文中紋理名稱
GLenum target; 紋理綁定的目標(biāo)
GLuint width; 加載的紋理的寬度
GLuint height; 加載的紋理的高度
GLuint depth; 加載的紋理的深度
GLKTextureInfoAlphaState alphaState; 加載的紋理中alpha分量狀態(tài)
GLKTextureInfoOrigin textureOrigin; 加載的紋理的原點(diǎn)位置
BOOL containsMipmaps; 加載的紋理是否包含mip貼圖
GLuint mimapLevelCount; mip貼圖的等級(jí)數(shù)量
GLuint arrayLength; 數(shù)組長(zhǎng)度
GLTextureLoader 簡(jiǎn)化從各種資源?文件中加載紋理
初始化
- (instancetype)initWithSharegroup:(EAGLSharegroup *)sharegroup;
- (instancetype)initWithShareContext:(NSOpenGLContext *)context;
從文件中加載處理
- textureWithContentsOfFile:options:errer: 從文件加載2D紋理圖像并從數(shù)據(jù)中
創(chuàng)建新的紋理
- textureWithContentsOfFile:options:queue:completionHandler: 從?件中異步
加載2D紋理圖像,并根據(jù)數(shù)據(jù)創(chuàng)建新紋理
從URL加載處理
- textureWithContentsOfURL:options:error: 從URL 加載2D紋理圖像并從數(shù)據(jù)創(chuàng)
建新紋理 - textureWithContentsOfURL:options:queue:completionHandler: 從URL異步
加載2D紋理圖像,并根據(jù)數(shù)據(jù)創(chuàng)建新紋理
從內(nèi)存中表示創(chuàng)建紋理
- textureWithContentsOfData:options:errer: 從內(nèi)存空間加載2D紋理圖像,并根
據(jù)數(shù)據(jù)創(chuàng)建新紋理
- textureWithContentsOfData:options:queue:completionHandler:從內(nèi)存空間
異步加載2D紋理圖像,并從數(shù)據(jù)中創(chuàng)建新紋理
從CGImages創(chuàng)建紋理
textureWithCGImage:options:error: 從Quartz圖像 加載2D紋理圖像并從數(shù)據(jù)創(chuàng)
建新紋理textureWithCGImage:options:queue:completionHandler: 從Quartz圖像異步
加載2D紋理圖像,并根據(jù)數(shù)據(jù)創(chuàng)建新紋理
從URL加載多維創(chuàng)建紋理
- cabeMapWithContentsOfURL:options:errer: 從單個(gè)URL加載?方體貼圖紋理
圖像,并根據(jù)數(shù)據(jù)創(chuàng)建新紋理
- cabeMapWithContentsOfURL:options:queue:completionHandler:從單個(gè)
URL異步加載?方體貼圖紋理圖像,并根據(jù)數(shù)據(jù)創(chuàng)建新紋理
從?件加載多維數(shù)據(jù)創(chuàng)建紋理
- cubeMapWithContentsOfFile:options:errer: 從單個(gè)文件加載?方體貼圖紋理
對(duì)象,并從數(shù)據(jù)中創(chuàng)建新紋理
- cubeMapWithContentsOfFile:options:queue:completionHandler:從單個(gè)?文件
異步加載?方體貼圖紋理對(duì)象,并從數(shù)據(jù)中創(chuàng)建新紋理
- cubeMapWithContentsOfFiles:options:errer: 從?系列?件中加載?方體貼圖
紋理圖像,并從數(shù)據(jù)總創(chuàng)建新紋理
- cubeMapWithContentsOfFiles:options:options:queue:completionHandler:
從?系列?件異步加載?方體貼圖紋理圖像,并從數(shù)據(jù)中創(chuàng)建新紋理
GLKView 使?用OpenGL ES 繪制內(nèi)容的視圖默認(rèn)實(shí)現(xiàn)
初始化視圖
- initWithFrame:context: 初始化新視圖
代理
delegate 視圖的代理
配置幀緩存區(qū)對(duì)象
drawableColorFormat 顏?渲染緩存區(qū)格式
drawableDepthFormat 深度渲染緩存區(qū)格式
drawableStencilFormat 模板渲染緩存區(qū)的格式
drawableMultisample 多重采樣緩存區(qū)的格式
幀緩存區(qū)屬性
drawableHeight 底層緩存區(qū)對(duì)象的?度(以像素為單位)
drawableWidth 底層緩存區(qū)對(duì)象的寬度(以像素為單位)
繪制視圖的內(nèi)容
context 繪制視圖內(nèi)容時(shí)使用的OpenGL ES 上下文
- bindDrawable 將底層FrameBuffer 對(duì)象綁定到OpenGL ES
enableSetNeedsDisplay 布爾值,指定視圖是否響應(yīng)使得視圖內(nèi)容?效的消息 - display ?即重繪視圖內(nèi)容
snapshot 繪制視圖內(nèi)容并將其作為新圖像對(duì)象返回
刪除視圖FrameBuffer對(duì)象
- deleteDrawable 刪除與視圖關(guān)聯(lián)的可繪制對(duì)象
GLKViewDelegate 用于GLKView 對(duì)象回調(diào)?法
繪制視圖的內(nèi)容
- glkView:drawInRect: 繪制視圖內(nèi)容 (必須實(shí)現(xiàn)代理)
更新
- (void) update 更新視圖內(nèi)容
- (void) glkViewControllerUpdate:
配置幀速率
preferredFramesPerSecond 視圖控制器調(diào)?視圖以及更新視圖內(nèi)容的速率
framesPerSencond 視圖控制器調(diào)用視圖以及更新其內(nèi)容的實(shí)際速率
配置GLKViewController 代理
delegate 視圖控制器的代理
GLKViewController 管理OpenGL ES 渲染循環(huán)的視圖控制器
控制幀更新
paused 布爾值,渲染循環(huán)是否已暫停
pausedOnWillResignActive 布爾值,當(dāng)前程序重新激活動(dòng)狀態(tài)時(shí)視圖控制器是
否?自動(dòng)暫停渲染循環(huán)
resumeOnDidBecomeActive 布爾值,當(dāng)前程序變?yōu)榛顒?dòng)狀態(tài)時(shí)視圖控制是否自動(dòng)
恢復(fù)呈現(xiàn)循環(huán)
GLKViewController 管理OpenGL ES 渲染循環(huán)的視圖控制器
獲取有關(guān)View 更新信息
frameDisplayed 視圖控制器?創(chuàng)建以來發(fā)送的幀更新
timeSinceFirstResume ?視圖控制器第?次恢復(fù)發(fā)送更新事件以來經(jīng)過的時(shí)間量
timeSinceLastResume ?上次視圖控制器恢復(fù)發(fā)送更新事件以來更新的時(shí)間量
timeSinceLastUpdate ?上次視圖控制器調(diào)?用委托方法以及經(jīng)過的時(shí)間量
glkViewControllerUpdate:timeSinceLastDraw ?上次視圖控制器調(diào)用視圖display ?法以來經(jīng)過的時(shí)間量
GLKViewControllerDelegate 渲染循環(huán)回調(diào)?方法
處理更新事件
- glkViewControllerUpdate: 在顯示每個(gè)幀之前調(diào)?用
暫停/恢復(fù)通知
- glkViewController:willPause: 在渲染循環(huán)暫腿剑或恢復(fù)之前調(diào)用.
GLKBaseEffect ?一種簡(jiǎn)單光照/著?系統(tǒng),?于基于著??OpenGL 渲染
命名Effect
label 給Effect(效果)命名
配置模型視圖轉(zhuǎn)換
transform 綁定效果時(shí)應(yīng)?于頂點(diǎn)數(shù)據(jù)的模型視圖,投影和紋理變換
配置光照效果
lightingType ?于計(jì)算每個(gè)片段的光照策略,GLKLightingType
配置光照
lightModelTwoSided 布爾值,表示為基元的兩側(cè)計(jì)算光照
material 計(jì)算渲染圖元光照使?的材質(zhì)屬性
lightModelAmbientColor 環(huán)境顏色,應(yīng)?效果渲染的所有圖元.
light0 場(chǎng)景中第一個(gè)光照屬性 light1 場(chǎng)景中第二個(gè)光照屬性 light2 場(chǎng)景中第三個(gè)光照屬性
配置紋理
texture2d0 第?個(gè)紋理理屬性 texture2d1 第?個(gè)紋理屬性
textureOrder 紋理應(yīng)?于渲染圖元的順序
配置霧化
fog 應(yīng)用于場(chǎng)景的霧屬性
配置顏?色信息
colorMaterialEnable 布爾值,表示計(jì)算光照與材質(zhì)交互時(shí)是否使?用顏色頂點(diǎn)屬性
useConstantColor 布爾值,指示是否使?用常量顏色
constantColor 不提供每個(gè)頂點(diǎn)顏?數(shù)據(jù)時(shí)使?常量顏?
配置顏?色信息
colorMaterialEnable 布爾值,表示計(jì)算光照與材質(zhì)交互時(shí)是否使?顏?頂點(diǎn)屬性
useConstantColor 布爾值,指示是否使?用常量顏色
constantColor 不提供每個(gè)頂點(diǎn)顏色數(shù)據(jù)時(shí)使用常量顏?
準(zhǔn)備繪制效果
- prepareToDraw 準(zhǔn)備渲染效果