OpenGLES入門(四)

在上一章中,我們使用頂點坐標(biāo)和頂點顏色,實現(xiàn)了一個簡單的3D圖形。

在本章中,將會使用圖片紋理來繼續(xù)實現(xiàn)這個圖形,并使其沿著X、Y、Z三個軸進行旋轉(zhuǎn)。

在引入代碼之前,先介紹一個我們在前面一直使用的紋理。

什么是紋理(Textures)?

紋理是一個用來保存圖像的顏色元素值的OpenGL ES緩存。

之前我們繪制了一個簡單的3D圖形,使用了5個頂點,分別給頂點設(shè)置了相應(yīng)的顏色。但是在實際生活中,一個復(fù)雜的圖形遠不止5個頂點,如果此時在去給每個頂點單獨設(shè)置顏色,這是不合理也不現(xiàn)實的。使用紋理,我們就可用通過從紋理中采樣獲得的紋理顏色賦值給頂點,展現(xiàn)更多細節(jié),更加真實的圖像。

紋理是一個2D圖片(甚至也有1D和3D的紋理),它可以用來添加物體的細節(jié);你可以想象紋理是一張繪有磚塊的紙,無縫折疊貼合到你的3D的房子上,這樣你的房子看起來就像有磚墻外表了。因為我們可以在一張圖片上插入非常多的細節(jié),這樣就可以讓物體非常精細而不用指定額外的頂點。


在上圖中,我們可以獲得了紋理的所有細節(jié)。為了把紋理信息映射到頂點中,我們需要一個之前已經(jīng)提到過的非常重要的坐標(biāo)系:紋理坐標(biāo)系。

可以看到,紋理坐標(biāo)系的原點在圖像的左下角,與頂點坐標(biāo)系不同。只需要將每一個頂點對應(yīng)到紋理坐標(biāo)(Texture Coordinate),為頂點添加紋理顏色,之后再對其它片段上進行片段插值(Fragment Interpolation)。就可以得到一個真實的圖形了。

一般復(fù)雜的圖形頂點坐標(biāo)都是通過模型導(dǎo)出來的,我們只需要給其賦予相應(yīng)的紋理,就能得到真實的圖形。

本章的代碼與上一章并沒有太多不同,主要就是引用了圖片的紋理。下面就是引入紋理的部分:

通過本章對紋理和頂點的結(jié)合,實現(xiàn)了一個帶有貼圖的簡單3D圖形,在接下來的內(nèi)容中,將繼續(xù)結(jié)合紋理實現(xiàn)更加復(fù)雜的圖形,這里是代碼。

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

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