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