OpenGL ES GLKit常用API解析

前言

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 準備渲染效果
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容