在上一章中,我們使用頂點坐標(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ù)雜的圖形,這里是代碼。