OpenGL ES GLKit 常用API解析

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)備渲染效果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卜壕,一起剝皮案震驚了整個(gè)濱河市您旁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌轴捎,老刑警劉巖鹤盒,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異轮蜕,居然都是意外死亡昨悼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門跃洛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來率触,“玉大人,你說我怎么就攤上這事汇竭〈谢龋” “怎么了穴张?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)两曼。 經(jīng)常有香客問我皂甘,道長(zhǎng),這世上最難降的妖魔是什么悼凑? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任偿枕,我火速辦了婚禮,結(jié)果婚禮上户辫,老公的妹妹穿的比我還像新娘渐夸。我一直安慰自己,他們只是感情好渔欢,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布墓塌。 她就那樣靜靜地躺著,像睡著了一般奥额。 火紅的嫁衣襯著肌膚如雪苫幢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天垫挨,我揣著相機(jī)與錄音韩肝,去河邊找鬼。 笑死棒拂,一個(gè)胖子當(dāng)著我的面吹牛伞梯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播帚屉,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼谜诫,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了攻旦?” 一聲冷哼從身側(cè)響起喻旷,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎牢屋,沒想到半個(gè)月后且预,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡烙无,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年锋谐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片截酷。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涮拗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情三热,我是刑警寧澤鼓择,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站就漾,受9級(jí)特大地震影響呐能,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抑堡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一摆出、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧首妖,春花似錦懊蒸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舌仍。三九已至妒貌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間铸豁,已是汗流浹背灌曙。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留节芥,地道東北人在刺。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像头镊,于是被迫代替她去往敵國(guó)和親蚣驼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351