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. 刪除控制代碼和緩衝
文章**:http://www.cppblog.com/w2001/archive/2008/05/10/49376.html
OpenGL VBO頂點緩衝的使用
opengl vbo頂點緩衝的使用 opengl vbo並不難,但是較繁瑣,其實其概念跟載入紋理是一樣的 初始化階段 1.glgenbuffersarb 1,nvbovertices 生成乙個控制代碼 2.glbindbufferarb gl array buffer arb,nvbovertice...
頂點屬性與頂點格式 頂點緩衝
頂點屬性與頂點格式 頂點可謂是3d世界中的基本元素。在計算機所能描繪的3d世界中,任何物體都是由多邊形構成的,可以是三邊形,也可以是四邊形等。由於三邊形,即三角形所具有的特殊性質決定其在3d世界中得到廣泛的使用。構成三角形需要三個點,這些點的性質就是這章所要講的內容。也許你已經知道頂點的結構定義,你...
自動計算頂點緩衝中所有頂點的法線
問題 當繪製自定義的結構時,你會發現光照不正確。這是因為你沒有指定正確的法線向量,顯示卡要求每個頂點都有法線資訊,這樣它才可以決定每個三角形獲得多少光照,詳細資訊可見第六章。為每個頂點計算法線向量看起來很複雜,因為大多數頂點被多個三角形共享。如果每個頂點只被乙個三角形使用,你只需找到三角形的法線向量...