opengl學(xué)習(xí)-高級數(shù)據(jù)

glBufferData函數(shù)

填充整個緩沖對象,會分配一塊內(nèi)存隘冲,并將數(shù)據(jù)添加到這塊內(nèi)存中。如果dataNULL則只分配內(nèi)存不進行填充。當(dāng)需要預(yù)留(Reserve)特定大小的內(nèi)存舔糖,之后回到這個緩沖填充的時候會很有用。

glBufferSubData

填充緩沖的特定區(qū)域传轰。參數(shù)為緩沖目標(biāo)剩盒、偏移量、數(shù)據(jù)大小和數(shù)據(jù)本身慨蛙。
偏移量用于指定從何處開始填充這個緩沖辽聊,使得可以插入或更新部分緩沖內(nèi)存。
緩沖要有足夠的已分配內(nèi)存期贫,所以對一個緩沖調(diào)用 glBufferSubData前必須要先調(diào)用glBufferData跟匆。

glBufferSubData(GL_ARRAY_BUFFER, 24, sizeof(data), &data); // 范圍: [24, 24 + sizeof(data)]

glMapBuffer

請求緩沖內(nèi)存的指針,直接將數(shù)據(jù)復(fù)制到緩沖當(dāng)中通砍。

float data[] = {
  0.5f, 1.0f, -0.35f
  ...
};
glBindBuffer(GL_ARRAY_BUFFER, buffer);
// 獲取指針
void *ptr = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY);
// 復(fù)制數(shù)據(jù)到內(nèi)存
memcpy(ptr, data, sizeof(data));
// 記得告訴OpenGL我們不再需要這個指針了
glUnmapBuffer(GL_ARRAY_BUFFER);

glUnmapBuffer

用于指針操作完成后解除映射玛臂,指針將不再可用,并且如果數(shù)據(jù)成功映射到緩沖中則返回GL_TRUE封孙。

分批頂點屬性

float positions[] = { ... };
float normals[] = { ... };
float tex[] = { ... };
// 填充緩沖
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(positions), &positions);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(positions), sizeof(normals), &normals);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(positions) + sizeof(normals), sizeof(tex), &tex);

//更新頂點屬性指針
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), 0);  
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)(sizeof(positions)));  
glVertexAttribPointer(
  2, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), (void*)(sizeof(positions) + sizeof(normals)));

復(fù)制緩沖

glCopyBufferSubData能從一個緩沖中復(fù)制數(shù)據(jù)到另一個緩沖中迹冤。

void glCopyBufferSubData(GLenum readtarget, GLenum writetarget, GLintptr readoffset,
                         GLintptr writeoffset, GLsizeiptr size);

readtarget: 填入復(fù)制源
writetarget: 復(fù)制目標(biāo)的緩沖目標(biāo)。

如果讀寫數(shù)據(jù)的兩個不同緩沖都為頂點數(shù)組緩沖可以使用GL_COPY_READ_BUFFERGL_COPY_WRITE_BUFFER作為readtargetwritetarget參數(shù)虎忌。

float vertexData[] = { ... };
glBindBuffer(GL_COPY_READ_BUFFER, vbo1);
glBindBuffer(GL_COPY_WRITE_BUFFER, vbo2);
glCopyBufferSubData(GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, 0, 0, sizeof(vertexData));

也可以只將writetarget緩沖綁定為新的緩沖目標(biāo)類型之一:

float vertexData[] = { ... };
glBindBuffer(GL_ARRAY_BUFFER, vbo1);
glBindBuffer(GL_COPY_WRITE_BUFFER, vbo2);
glCopyBufferSubData(GL_ARRAY_BUFFER, GL_COPY_WRITE_BUFFER, 0, 0, sizeof(vertexData));
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泡徙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子膜蠢,更是在濱河造成了極大的恐慌堪藐,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挑围,死亡現(xiàn)場離奇詭異礁竞,居然都是意外死亡,警方通過查閱死者的電腦和手機杉辙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門模捂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事枫绅∪ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵并淋,是天一觀的道長寓搬。 經(jīng)常有香客問我,道長县耽,這世上最難降的妖魔是什么句喷? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮兔毙,結(jié)果婚禮上唾琼,老公的妹妹穿的比我還像新娘。我一直安慰自己澎剥,他們只是感情好锡溯,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著哑姚,像睡著了一般祭饭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上叙量,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天倡蝙,我揣著相機與錄音,去河邊找鬼绞佩。 笑死寺鸥,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的品山。 我是一名探鬼主播胆建,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼肘交!你這毒婦竟也來了眼坏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤酸些,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后檐蚜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體魄懂,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年闯第,在試婚紗的時候發(fā)現(xiàn)自己被綠了市栗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖填帽,靈堂內(nèi)的尸體忽然破棺而出蛛淋,到底是詐尸還是另有隱情,我是刑警寧澤篡腌,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布褐荷,位于F島的核電站,受9級特大地震影響嘹悼,放射性物質(zhì)發(fā)生泄漏叛甫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一杨伙、第九天 我趴在偏房一處隱蔽的房頂上張望其监。 院中可真熱鬧,春花似錦限匣、人聲如沸抖苦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锌历。三九已至,卻和暖如春哲身,著一層夾襖步出監(jiān)牢的瞬間辩涝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工勘天, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留怔揩,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓脯丝,卻偏偏與公主長得像商膊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宠进,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容