11-1.GLSL-索引繪圖

索引繪圖

索引繪圖是一種由開發(fā)者指定頂點連接順序的繪圖方式。優(yōu)勢是可以復(fù)用頂點,減少內(nèi)存的使用。
如繪制一個金字塔3D圖形時,如果使用三角形帶或三角形組合繪制時,將會有多個頂點的重復(fù),但如果使用索引繪圖,則只需要5個點,重復(fù)利用,指定其連接順序即可實現(xiàn)金字塔3D圖形的繪制。

金字塔

金字塔,有5個面,由6個三角形組成,一共有18個頂點,然而實際肉眼可見的只有5個頂點。
可以理解為這個5個頂點通過其中3個頂點的不同組合,最終組合成金字塔6個三角形面的18個頂點。其中5個頂點都在不斷的重復(fù)利用。
索引繪圖就是通過索引的方式表示頂點之間的連接,將重復(fù)頂點復(fù)用進行圖形繪制的一種技巧。

image

索引繪制需要做兩件事:一個構(gòu)造良好的索引數(shù)組和一個新的索引繪制命令。

  1. 索引數(shù)組

索引數(shù)組,存儲在緩存對象中,它有一個特別的緩存對象,GL_ELEMENT_ARRAY_BUFFER. 你可以使用這個緩存對象來作為正常的緩存對象使用,就像GL_ARRAY_BUFFER。但是對于OpenGL他有特殊含義,那就是索引繪圖必須使用這個緩存對象。

  1. 索引繪制命令

為了進行索引繪圖,我們需要將索引數(shù)組綁定到GL_ELEMENT_ARRAY_BUFFER,然后調(diào)用glDrawElements。

//使用索引繪圖
/*
 void glDrawElements(GLenum mode,GLsizei count,GLenum type,const GLvoid * indices);
 參數(shù)列表:
 mode:要呈現(xiàn)的畫圖的模型 
            GL_POINTS
            GL_LINES
            GL_LINE_LOOP
            GL_LINE_STRIP
            GL_TRIANGLES
            GL_TRIANGLE_STRIP
            GL_TRIANGLE_FAN
 count:繪圖個數(shù)
 type:類型
         GL_BYTE
         GL_UNSIGNED_BYTE
         GL_SHORT
         GL_UNSIGNED_SHORT
         GL_INT
         GL_UNSIGNED_INT
 indices:繪制索引數(shù)組

 */
glDrawElements(GL_TRIANGLES, sizeof(indices) / sizeof(indices[0]), GL_UNSIGNED_INT, indices);
?著作權(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ù)。

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

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