OpenGLES筆記五VAO,cube貼圖

看過(guò)好多VAO和VBO的解釋,大都模模糊糊,可能是因?yàn)槲冶容^笨吧,很簡(jiǎn)單的關(guān)聯(lián),我會(huì)用一個(gè)小例子幫助大家理解。

VBO(Vertex Buffer Object),我們繪制需要的頂點(diǎn)數(shù)據(jù),需要從cpu傳遞到gpu,這樣每次傳遞顯然很費(fèi)時(shí)間,從2.0開始,我們可以再gpu中開啟一塊保存數(shù)據(jù)的區(qū)域,減少傳遞的時(shí)間。

VAO(Vertex Array Object),當(dāng)我們需要繪制多個(gè)形狀的圖形時(shí),一個(gè)VBO為我們保存所有的數(shù)據(jù),VAO可以看做管理VBO的,需要時(shí)綁定對(duì)應(yīng)的VAO就可以繪制對(duì)應(yīng)的數(shù)據(jù)。

上面例子中,我畫了兩個(gè)長(zhǎng)方形,在每次使用VBO傳入著色器數(shù)據(jù)的時(shí)候,綁定VAO,那么在繪制的時(shí)候,每次綁定下VAO再繪制,效果如下

CubeMap立體貼圖

也叫立體貼圖,就好比一個(gè)正方體,用圖片把它包圍起來(lái),視角在里面看東西,就好像置身于場(chǎng)景中一樣。

立體貼圖是用6個(gè)正方形2D紋理拼接出來(lái)的,正常情況下,把正方體圖片展開,會(huì)得到下面的一張圖片,然后通過(guò)一定的順序?qū)⒚總€(gè)正方形圖片,從上到下拼接成一個(gè)長(zhǎng)圖,加載到GL_TEXTURE_CUBE_MAP中

我們進(jìn)入GL_TEXTURE_CUBE_MAP中,會(huì)看到很多枚舉的類型,重要的是下面這幾個(gè)

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

這幾個(gè)就是圖片從上到下的順序,我們把上面圖片十字中間的圖片作為z軸的正方向,那么順序就是右、左、上、下、前、后,這里有個(gè)小的疑惑,在用GLKTextureLoader加載cube圖片的時(shí)候,方法cubeMapWithContentsOfFile說(shuō)圖片的順序是北、南、東、西、上、下,根本對(duì)應(yīng)不上。

使用時(shí)用GLKTextureLoader加載圖片

GLKTextureInfo *textureInfo = [GLKTextureLoader cubeMapWithContentsOfFile:path options:nil error:&error];

在片元著色器中使用samplerCube作為立體貼圖的紋理句柄

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容