OpenGL 高级数据Advanced Data
OpenGL高級(jí)數(shù)據(jù)Advanced Data
- 高級(jí)數(shù)據(jù)Advanced Data簡(jiǎn)介
- 分批頂點(diǎn)屬性
- 復(fù)制緩沖
高級(jí)數(shù)據(jù)Advanced Data簡(jiǎn)介
我們?cè)贠penGL中大量使用緩沖來儲(chǔ)存數(shù)據(jù)已經(jīng)有很長(zhǎng)時(shí)間了。操作緩沖其實(shí)還有更有意思的方式,而且使用紋理將大量數(shù)據(jù)傳入著色器也有更有趣的方法。這一節(jié)中,我們將討論一些更有意思的緩沖函數(shù),以及我們?cè)撊绾问褂眉y理對(duì)象來儲(chǔ)存大量的數(shù)據(jù)(紋理的部分還沒有完成)。
OpenGL中的緩沖只是一個(gè)管理特定內(nèi)存塊的對(duì)象,沒有其它更多的功能了。在我們將它綁定到一個(gè)緩沖目標(biāo)(Buffer Target)時(shí),我們才賦予了其意義。當(dāng)我們綁定一個(gè)緩沖到GL_ARRAY_BUFFER時(shí),它就是一個(gè)頂點(diǎn)數(shù)組緩沖,但我們也可以很容易地將其綁定到GL_ELEMENT_ARRAY_BUFFER。OpenGL內(nèi)部會(huì)為每個(gè)目標(biāo)儲(chǔ)存一個(gè)緩沖,并且會(huì)根據(jù)目標(biāo)的不同,以不同的方式處理緩沖。
到目前為止,我們一直是調(diào)用glBufferData函數(shù)來填充緩沖對(duì)象所管理的內(nèi)存,這個(gè)函數(shù)會(huì)分配一塊內(nèi)存,并將數(shù)據(jù)添加到這塊內(nèi)存中。如果我們將它的data參數(shù)設(shè)置為NULL,那么這個(gè)函數(shù)將只會(huì)分配內(nèi)存,但不進(jìn)行填充。這在我們需要預(yù)留(Reserve)特定大小的內(nèi)存,之后回到這個(gè)緩沖一點(diǎn)一點(diǎn)填充的時(shí)候會(huì)很有用。
除了使用一次函數(shù)調(diào)用填充整個(gè)緩沖之外,我們也可以使用glBufferSubData,填充緩沖的特定區(qū)域。這個(gè)函數(shù)需要一個(gè)緩沖目標(biāo)、一個(gè)偏移量、數(shù)據(jù)的大小和數(shù)據(jù)本身作為它的參數(shù)
總結(jié)
以上是生活随笔為你收集整理的OpenGL 高级数据Advanced Data的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑静音怎么开声音怎么回事 电脑静音后怎
- 下一篇: OpenGL 高级GLSL(Advanc