OpenGL VBO頂點緩衝的使用

2021-09-01 04:28:12 字數 1459 閱讀 4314

opengl vbo頂點緩衝的使用

opengl vbo並不難,但是較繁瑣,其實其概念跟載入紋理是一樣的:

初始化階段:

1. glgenbuffersarb(1, &nvbovertices); //生成乙個控制代碼

2. glbindbufferarb(gl_array_buffer_arb, nvbovertices); //宣告該控制代碼為乙個vbo控制代碼,並選擇之

3. glbufferdataarb(gl_array_buffer_arb, sizeof(vertices), vertices,gl_static_draw); //將頂點集上傳至server端

使用階段:

1. glenableclientstate(gl_vertex_array); //開始使用vbo

2. glbindbufferarb(gl_array_buffer_arb, nvbovertices);  //選擇當前使用的vbo

3. glvertexpointer(3, gl_float, 0, buffer_offset(0));  //指定vbo頂點格式

4. gldrawarrays( gl_********s, 0, g_pmesh->m_nvertexcount ); //畫吧

5. gldisableclientstate(gl_vertex_array); //停止使用vbo

收尾階段:

1. gldeletebuffersarb(1,&nvbovertices); //刪除控制代碼,同時刪除server端頂點緩衝

再來看看紋理緩衝是怎麼使用的,其實差不多:

初始化階段:

1. glgentextures(1, &texid);//建立控制代碼

2. glbindtexture(gl_texture_2d, texid); //設定控制代碼型別

3. glteximage2d(gl_texture_2d, 0, gl_rgba, img->getwidth(), img->getheight(), 0, gl_rgba, gl_unsigned_byte, raw_rgba); //上傳紋理緩衝

使用階段:

1. glenable(gl_texture_2d); //開始使用紋理緩衝

2. glbindtexture(gl_texture_2d, texid); //選擇當前使用的紋理緩衝

3. 傳送頂點和紋理座標,畫吧...省略

4. gldisable(gl_texture_2d); //停止使用紋理

收尾階段:

1. gldeletetextures(1,&texid);//刪除控制代碼,,同時刪除server端緩衝

看到了麼,這個概念是不是很相似?都是:

1. 建立控制代碼

2. 設定控制代碼型別

3. 上傳資料

4. 開始使用緩衝

5. 選擇控制代碼

6. 使用緩衝

7. 停止使用緩衝

8. 刪除控制代碼和緩衝

OpenGL VBO頂點緩衝的使用

opengl vbo頂點緩衝的使用 opengl vbo並不難,但是較繁瑣,其實其概念跟載入紋理是一樣的 初始化階段 1.glgenbuffersarb 1,nvbovertices 生成乙個控制代碼 2.glbindbufferarb gl array buffer arb,nvbovertice...

頂點屬性與頂點格式 頂點緩衝

頂點屬性與頂點格式 頂點可謂是3d世界中的基本元素。在計算機所能描繪的3d世界中,任何物體都是由多邊形構成的,可以是三邊形,也可以是四邊形等。由於三邊形,即三角形所具有的特殊性質決定其在3d世界中得到廣泛的使用。構成三角形需要三個點,這些點的性質就是這章所要講的內容。也許你已經知道頂點的結構定義,你...

自動計算頂點緩衝中所有頂點的法線

問題 當繪製自定義的結構時,你會發現光照不正確。這是因為你沒有指定正確的法線向量,顯示卡要求每個頂點都有法線資訊,這樣它才可以決定每個三角形獲得多少光照,詳細資訊可見第六章。為每個頂點計算法線向量看起來很複雜,因為大多數頂點被多個三角形共享。如果每個頂點只被乙個三角形使用,你只需找到三角形的法線向量...