日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

红宝书阅读笔记——缓冲区对象

發布時間:2025/4/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 红宝书阅读笔记——缓冲区对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前面的頂點數組使得幾何圖元的顯示方便了很多,但是如果每次都要向OPENGL發送一大塊數據,而這數據其實并沒有修改過,那么這傳輸就是冗余的。所以這里添加了緩沖區對象,將頂點數組存儲在服務器端的緩沖區對象中。

1. 創建緩沖區對象

glGenBuffers(GLsizei n,GLuint *buffers) 任何非零的無符合整數都可以作為緩沖區對象的標識符使用。這個函數的作用就是向系統申請n個緩沖區,系統把這n個緩沖區的標識符都放進buffers數組中。還可以調用glIsBuffer()函數判斷一個標識符是否正被使用。

2. 激活緩沖區對象

為了激活緩沖區對象,首先需要將它綁定。glBindBuffer(GLenum target, GLuint buffer)。target用于決定綁定的是頂點數據還是索引,關于這個函數的解釋,書上第二章講的很詳細了。

3. 用數據分配和初始化緩沖區對象

glBufferData()用于在OPENGL服務器中分配內存建立緩沖區,并將客戶機的內存復制到這個緩沖區對象。

4. 更新緩沖區對象的數值

當程序中的頂點坐標、顏色等數據發生了修改之后,需要修改對應的緩沖區數值。這里有兩種方法可以完成此功能。

glBufferSubData():直接用提供的數據替換綁定的緩沖區的數據子集。

第二種方法更靈活些:

首先用glMapBuffer()返回一個緩沖區指針,然后通過指針和下標對緩沖區對象做修改,最后調用glUnmapBuffer()取消對緩沖區的映射。

5. 清除緩沖區對象

glDeleteBuffers(GLsizei n,GLuint *buffers),完成了對緩沖區對象的操作之后,可以釋放它的資源。

?

當使用緩沖區對象存儲頂點數組數據時,應在應用程序中增加幾個步驟:

  • 生成緩沖區對象標識符(可選)。
  • 綁定緩沖區對象,確定它是用于存儲頂點數據還是索引。
  • 請求數據的存儲空間,并對這些數據元素進行初始化,下一個步驟可選。
  • 指定相對于緩沖區起始位置的偏移量,對諸如glVertexPointer()這樣的頂點數組進行初始化。
  • 綁定適當的緩沖區對象,以用于渲染。
  • 使用適當的頂點數組渲染函數進行渲染,如glDrawArrays()或glDrawElements()等。
  • 流程圖如下:

    over~

    本文原創,轉載請注明出處:

    http://blog.163.com/sara_athena/ 或

    http://www.cnblogs.com/luluathena/

    轉載于:https://www.cnblogs.com/luluathena/archive/2010/08/23/1806716.html

    總結

    以上是生活随笔為你收集整理的红宝书阅读笔记——缓冲区对象的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。