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