GLKit 框架的設計?標是為了簡化基于OpenGL / OpenGL ES 的應?開發(fā)撩荣,它的出現(xiàn)加快OpenGL ES或OpenGL應?程序開發(fā)铣揉。 使?數學庫餐曹,背景紋理加載,預先創(chuàng)建的著?器效果朽合,以及標準視圖和視圖控制器來實現(xiàn)渲染循環(huán)。
GLKit框架提供了功能和類曹步,可以減少創(chuàng)建新的基于著?器的應?程序所需的?工作量,或者?持依賴早期版本的OpenGL ES或OpenGL提供的固定函數頂點或?段處理的現(xiàn)有應用程序讲婚。
一、GLKit功能
- 加載紋理
- 提供高性能的數學運算
- 提供常見的著色器
- 提供視圖以及視圖控制器
GLKView 提供繪制場所(View)
GLKViewController(擴展于標準的UIKit 設計模式,用于繪制視圖內容的管理與呈現(xiàn))
二戒祠、GLKit常用API
-
紋理加載
GLKTextureInfo
創(chuàng)建OpenGL 紋理信息GLKTextureInfo *textureInfo = [GLKTextureLoader textureWithContentsOfFile:filePath options:options error:nil]; name : OpenGL 上下?中紋理名稱 target : 紋理綁定的目標 height : 加載的紋理?度 width : 加載紋理的寬度 textureOrigin : 加載紋理中的原點位置 alphaState: 加載紋理中alpha分量狀態(tài) containsMipmaps: 布爾值,加載的紋理是否包含mip貼圖
GLTextureLoader
簡化從各種資源?件中加載紋理+ (nullable GLKTextureInfo *)textureWithContentsOfFile:(NSString *)path options:(nullable NSDictionary<NSString*, NSNumber*> *)options error:(NSError * __nullable * __nullable)outError; 從?件加載2D紋理圖像并從數據中創(chuàng)建新的紋理 path:圖片路徑 options:控制圖片如何加載 error:錯誤描述 - textureWithContentsOfFile:options:queue:completionHandler: 從?件中異步加載2D紋理圖像,并根據數據創(chuàng)建新紋理 - textureWithContentsOfURL:options:error: 從URL加載2D紋理圖像并從數據創(chuàng)建新紋理 - textureWithContentsOfURL:options:queue:completionHandler: 從URL異步加載2D紋理圖像,并根據數據創(chuàng)建新紋理 + textureWithContentsOfData:options:errer: 從內存空間加載2D紋理圖像,并根據數據創(chuàng)建新紋理 - textureWithContentsOfData:options:queue:completionHandler: 從內存空間異步加載2D紋理圖像,并從數據中創(chuàng)建新紋理 - textureWithCGImage:options:error: 從Quartz圖像加載2D紋理圖像并從數據創(chuàng)建新紋理 - textureWithCGImage:options:queue:completionHandler: 從Quartz圖像異步加載2D紋理圖像,并根據數據創(chuàng)建新紋理 + cubeMapWithContentsOfURL:options:errer: 從單個URL加載立方體貼圖紋理圖像,并根據數據創(chuàng)建新紋理 - cubeMapWithContentsOfURL:options:queue:completionHandler: 從單個URL異步加載?方體貼圖紋理圖像,并根據數據創(chuàng)建新紋理 + cubeMapWithContentsOfFile:options:errer: 從單個文件加載?方體貼圖紋理對象,并從數據中創(chuàng)建新紋理 - cubeMapWithContentsOfFile:options:queue:completionHandler: 從單個文件異步加載?方體貼圖紋理對象,并從數據中創(chuàng)建新紋理 + cubeMapWithContentsOfFiles:options:errer: 從一系列文件中加載?方體貼圖紋理圖像,并從數據總創(chuàng)建新紋理 - cubeMapWithContentsOfFiles:options:options:queue:completionHandler: 從一系列文件異步加載?方體貼圖紋理圖像,并從數據中創(chuàng)建新紋理
-
視圖渲染
GLKView
使用OpenGL ES 繪制內容的視圖默認實現(xiàn)- initWithFrame:context: 初始化新視圖 delegate 視圖的代理 drawableColorFormat 顏色渲染緩存區(qū)格式 drawableDepthFormat 深度渲染緩存區(qū)格式 drawableStencilFormat 模板渲染緩存區(qū)的格式 drawableMultisample 多重采樣緩存區(qū)的格式 drawableHeight 底層緩存區(qū)對象的高度(以像素為單位) drawableWidth 底層緩存區(qū)對象的寬度(以像素為單位) context 繪制視圖內容時使用的OpenGL ES 上下? - bindDrawable 將底層FrameBuffer 對象綁定到OpenGL ES enableSetNeedsDisplay 布爾值,指定視圖是否響應使得視圖內容無效的消息 - display ?即重繪視圖內容 snapshot 繪制視圖內容并將其作為新圖像對象返回 - deleteDrawable 刪除與視圖關聯(lián)的可繪制對象
GLKViewDelegate
用于GLKView 對象回調?法- glkView:drawInRect: 繪制視圖內容 (必須實現(xiàn)代理)
GLKViewController
管理OpenGL ES 渲染循環(huán)的視圖控制器- (void) update - (void) glkViewControllerUpdate: 在顯示每個幀之前調用,當對GLKViewController進行子類化并實現(xiàn)update方法時,將不會調用glkViewControllerUpdate方法。 preferredFramesPerSecond 視圖控制器調用視圖以及更新視圖內容的速率 framesPerSencond 視圖控制器調用視圖以及更新其內容的實際速率 paused 布爾值,渲染循環(huán)是否已暫停 pausedOnWillResignActive 布爾值,當前程序重新激活動狀態(tài)時視圖控制器是否自動暫停渲染循環(huán) resumeOnDidBecomeActive 布爾值,當前程序變?yōu)榛顒訝顟B(tài)時視圖控制是否自動恢復呈現(xiàn)循環(huán) frameDisplayed 視圖控制器自創(chuàng)建以來發(fā)送的幀更新數 timeSinceFirstResume ?視圖控制器第一次恢復發(fā)送更新事件以來經過的時間量 timeSinceLastResume 自上次視圖控制器恢復發(fā)送更新事件以來更新的時間量 timeSinceLastUpdate 自上次視圖控制器調用委托方法以及經過的時間量 timeSinceLastDraw ?上次視圖控制器調用視圖display ?法以來經過的時間量
GLKBaseEffect
一種簡單光照/著色系統(tǒng),?于基于著色器OpenGL 渲染label 給Effect(效果)命名 transform 綁定效果時應用于頂點數據的模型視圖,投影和紋理變換 lightingType ?于計算每個片段的光照策略 GLKLightingType: 1?GLKLightingTypePerVertex 表示在三角形中每個頂點執(zhí)?光照計算,然后在三?形進行插值 2?GLKLightingTypePerPixel 表示光照計算的輸?在三?形內插入,并且在每個片段執(zhí)行光照計算 lightModelTwoSided 布爾值,表示為基元的兩側計算光照 material 計算渲染圖元光照使用的材質屬性 lightModelAmbientColor 環(huán)境顏色,應用效果渲染的所有圖元 light0 場景中第一個光照屬性 light1 場景中第二個光照屬性 light2 場景中第三個光照屬性 texture2d0 第一個紋理屬性 texture2d1 第二個紋理屬性 textureOrder 紋理應用于渲染圖元的順序 fog 應用于場景的霧屬性 colorMaterialEnable 布爾值,表示計算光照與材質交互時是否使用顏色頂點屬性 useConstantColor 布爾值,指示是否使用常量顏? constantColor 不提供每個頂點顏色數據時使用常量顏? - prepareToDraw 準備渲染效果