更多屬性
我們說過,一個頂點就是一個集合,這個集合中可以具有頂點的多個屬性,例如位置、顏色、法線方向、紋理坐標(biāo)等。之前我們只在這個集合中設(shè)置了頂點的位置,這次我們打算把顏色也添加進去。
現(xiàn)在我們每個頂點將由六個浮點數(shù)構(gòu)成,其中前三個描述頂點的位置,后三個描述頂點的顏色:

由于現(xiàn)在有更多的數(shù)據(jù)要發(fā)送到頂點著色器,我們需要調(diào)整一下頂點著色器。其中頂點位置的位置值(location)依然是0,頂點顏色的位置值則設(shè)置為1(這里我們沒有使用全局變量uniform來設(shè)置顏色):

注意,在這里的所有變量中,除了gl_Position是GLSL的內(nèi)置輸出變量,其余都可以隨意命名。v_color是我們向頂點著色器發(fā)送的變量,頂點著色器將其處理后成為輸出變量my_color再發(fā)送給片段著色器,片段著色器接收my_color,對其處理后,輸出最終的顏色color。
因為我們添加了另一個頂點屬性,在修改完著色器后,下一步我們要重新配置頂點屬性:

在這里,第五個參數(shù)步長變?yōu)榱?個浮點數(shù)的長度,因為現(xiàn)在每一個頂點的屬性是2*3個浮點數(shù),也就是頂點的某個屬性與下一個頂點的某個屬性的距離即下標(biāo)之差為6。第六個參數(shù)是屬性在起始位置的偏移量,因為位置屬性是第一個屬性,所以它的偏移量為0(即每個頂點中第一個數(shù)據(jù)就是位置屬性),而顏色是第二個屬性,所以它的偏移量為3個浮點數(shù)(即每個頂點中第四個數(shù)據(jù)是顏色屬性)。
由于我們?yōu)槊恳粋€頂點都設(shè)置了不同的顏色,運行程序會得到一個彩色的圖形:
