1、簡單概念:
- 1、OpenGL主要是將應用數(shù)據(jù)變成我們所看到的畫面,這樣的過程稱為渲染。
- 2、幀緩存:在渲染過程中,圖形加速器一般都有一個預先分配好的內(nèi)存區(qū)域來維護顯示列表內(nèi)容(譯者:注意,不一定是主內(nèi)存)。它由顯示內(nèi)存和脫屏內(nèi)存組成。隨著OpenGL的渲染而改變內(nèi)容的那一部分圖形內(nèi)存區(qū)域叫做幀緩存(frame buffer)。
- 3、CPU將數(shù)據(jù)復制到OpenGL ES的緩存中,GPU獲取到緩存之后進行處理,處理完的數(shù)據(jù)最后返還給CPU,GPU的運算能力是比GPU慢的,所以GPU處理數(shù)據(jù)的同時,CPU也能過繼續(xù)執(zhí)行程序。
2、為緩存提供數(shù)據(jù)的七個步驟
- 1 、 生成一個緩存的標識符
glGenBuffers(標識符數(shù)量,標識符的名字的地址); - 2 、把標識符的緩存指向當前緩存
glBindBuffer(緩存的類型,標識符);
第一個參數(shù)表示哪一種類型的緩存,只支持兩種緩存,一種是GL_ARRAY_BUFFER和GL_ELEMENT_ARRAY_BUFFER,
GL_ARRAY_BUFFER主要用于頂點屬性數(shù)組,第二個參數(shù)為標識符 - 3、復制數(shù)據(jù)到緩存中
glBufferData(緩存的類型,數(shù)據(jù)的大小,數(shù)據(jù)的地址,緩存在運算中的用途); - 4、是否啟用緩存中的數(shù)據(jù)
glEnableVertexAttribArray(提供的數(shù)據(jù)形式),是一個枚舉,值分別為:GLKVertexAttribPosition,GLKVertexAttribNormal,GLKVertexAttribColor,GLKVertexAttribTexCoord0,GLKVertexAttribTexCoord1 - 5、告訴OpenGL ES在緩存中的數(shù)據(jù)的信息
glVertexAttribPointer(頂點的位置信息,每個頂點位置的部分數(shù)量,GL_FLOAT,GL_FALSE,步幅,訪問數(shù)據(jù)的地址) - 6、繪圖
glDrawArrays(繪制的場景,頂點的位置,渲染頂點的數(shù)量) - 7、刪除已經(jīng)生成的緩存及釋放相關的資源
glDeleteBuffers(標識符的數(shù)量,標識符) - 8、OpenGLES的頂點坐標系的值的范圍是-1.0f到1.0f。當我們需要判斷邊界的時候可以使用-1.0f到1.0f來進行判斷