OpenGL ES - GLKBaseEffect

GLKBaseEffect旨在簡化當今許多OpenGL應用程序常見的視覺效果哎媚。 對于iOS喇伯,GLKBaseEffect至少需要OpenGL ES 2.0,對于OS X拨与,GLKBaseEffect至少需要一個OpenGL Core Profile稻据。 在實例化和初始化GLKBaseEffect對象之前,必須創(chuàng)建一個合適的上下文并使其成為最新的上下文买喧。

GLKBaseEffect旨在與自定義的OpenGL代碼自由地互操作捻悯。 它還旨在最小程度上影響OpenGL狀態(tài)設置。 在初始化GLKBaseEffect對象及其屬性時淤毛,會保留OpenGL狀態(tài)設置今缚。

GLKBaseEffect是基于程序的,通過其底層GLSL程序的綁定低淡,當 - [GLKBaseEffect prepareToDraw]被調(diào)用時姓言,它會隱式地修改GL_CURRENT_PROGRAM狀態(tài)設置。 出于性能原因蔗蹋,GL_CURRENT_PROGRAM不會被GLKBaseEffect保存和恢復何荚,
出于性能原因,GL_CURRENT_PROGRAM不會被GLKBaseEffect保存和恢復猪杭,因此該類的客戶端必須在調(diào)用[GLKBaseEffect prepareToDraw]之前或之后設置/保存/恢復GL_CURRENT_PROGRAM餐塘,因為它們適用于其應用程序。

如果已經(jīng)指定了紋理屬性并被啟用胁孙,GLKBaseEffect也將修改OpenGL狀態(tài)元素GL_TEXTURE_BINDING_2D唠倦。 此狀態(tài)也必須以上述GL_CURRENT_PROGRAM描述的方式進行處理称鳞。

GLKBaseEffect使用命名頂點屬性,因此當配置/啟用/綁定要與GLKBaseEffect一起使用的頂點屬性數(shù)據(jù)時稠鼻,客戶端應用程序可以引用以下頂點屬性名稱:

  GLKVertexAttribPosition      0
  GLKVertexAttribNormal        1
  GLKVertexAttribColor         2
  GLKVertexAttribTexCoord0     3
  GLKVertexAttribTexCoord1     4

  請注意冈止,GLKVertexAttribNormal的法線總是標準化。

使用GLKBaseEffect的4個規(guī)范步驟是:

  (1) 分配并初始化GLKBaseEffect的一個實例
  directionalLightEffect = [[GLKBaseEffect alloc] init];

  (2) 在效果上設置所需的屬性
  // 配置燈效果
  directionalLightEffect.light0.position = lightPosition;
  directionalLightEffect.light0.diffuseColor = diffuseColor;
  directionalLightEffect.light0.ambientColor = ambientColor;

  // 配置材料
  directionalLightEffect.material.diffuseColor = materialDiffuseColor;
  directionalLightEffect.material.ambientColor = materialAmbientColor;
  directionalLightEffect.material.specularColor = materialSpecularColor;
  directionalLightEffect.material.shininess = 10.0;

  (3) 使用要繪制的模型或場景的頂點數(shù)組對象初始化頂點屬性/頂點數(shù)組狀態(tài).

  glGenVertexArraysOES(1, &vaoName);
  glBindVertexArrayOES(vaoName);

  // 為每個頂點屬性創(chuàng)建和初始化VBO
  // 下面的例子顯示了一個建立position vertex屬性的例子候齿。
  // 對每個附加的所需屬性重復以下步驟:normal熙暴,color,texCoord0慌盯,texCoord1周霉。
  
  glGenBuffers(1, &positionVBO);
  glBindBuffer(GL_ARRAY_BUFFER, positionVBO);
  glBufferData(GL_ARRAY_BUFFER, vboSize, dataBufPtr, GL_STATIC_DRAW);
  glVertexAttribPointer(GLKVertexAttribPosition, size, type, normalize, stride, NULL);
  glEnableVertexAttribArray(GLKVertexAttribPosition);

  ... 對其他所需的頂點屬性重復上述步驟

  glBindVertexArrayOES(0);   // unbind the VAO we created above

  (4) 對于繪制的每個框架:更新每幀更改的屬性。 通過調(diào)用 - [GLKBaseEffect prepareToDraw]同步更改的效果狀態(tài)亚皂。 用效果繪制模型

  directionalLightEffect.transform.modelviewMatrix = modelviewMatrix;
  [directionalLightEffect prepareToDraw];
  glBindVertexArrayOES(vaoName);
  glDrawArrays(GL_TRIANGLE_STRIP, 0, vertCt);
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末俱箱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子灭必,更是在濱河造成了極大的恐慌狞谱,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禁漓,死亡現(xiàn)場離奇詭異跟衅,居然都是意外死亡,警方通過查閱死者的電腦和手機播歼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門伶跷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人秘狞,你說我怎么就攤上這事叭莫。” “怎么了谒撼?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵食寡,是天一觀的道長。 經(jīng)常有香客問我廓潜,道長,這世上最難降的妖魔是什么善榛? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任辩蛋,我火速辦了婚禮,結(jié)果婚禮上移盆,老公的妹妹穿的比我還像新娘悼院。我一直安慰自己,他們只是感情好咒循,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布据途。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪番官。 梳的紋絲不亂的頭發(fā)上冀续,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機與錄音熔萧,去河邊找鬼糖驴。 笑死,一個胖子當著我的面吹牛佛致,可吹牛的內(nèi)容都是我干的贮缕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼俺榆,長吁一口氣:“原來是場噩夢啊……” “哼感昼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起罐脊,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤定嗓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后爹殊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜕乡,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年梗夸,在試婚紗的時候發(fā)現(xiàn)自己被綠了层玲。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡反症,死狀恐怖辛块,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铅碍,我是刑警寧澤润绵,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站胞谈,受9級特大地震影響尘盼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜烦绳,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一卿捎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧径密,春花似錦午阵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽植袍。三九已至,卻和暖如春籽懦,著一層夾襖步出監(jiān)牢的瞬間于个,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工猫十, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留览濒,地道東北人拖云。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像乏苦,于是被迫代替她去往敵國和親尤筐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容