多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 直接Stream Video到GPU Texture 內存

直接Stream Video到GPU Texture 內存

來源:程序員人生   發布時間:2015-08-28 08:13:02 閱讀次數:3716次

在某些場合需要快速的將Video Frame stream到GPU texture, 比如要使用GPU渲染從相機過來的幀數據。這時候候就能夠將數據直接寫入pixel unpack buffer object.


Pixel unpack buffer object

OpenGL 支持幾種buffer objects, 其中用的最多的大概就是vertex buffer object (VBO) 用來存儲頂點相干數據。 創建和綁定buffer object的函數:

void glGenBuffers(GLsizei n, GLuint *buffers); void glBindBuffer(GLenum target, GLuint buffer);
  • target: 可以是以下任1個,
    • GL_ARRAY_BUFFER
    • GL_ELEMENT_ARRAY_BUFFER
    • GL_COPY_READ_BUFFER
    • GL_COPY_WRITE_BUFFER
    • GL_PIXEL_PACK_BUFFER
    • GL_PIXEL_UNPACK_BUFFER
    • GL_TRANSFORM_FEEDBACK_BUFFER
    • GL_UNIFORM_BUFFER

在綁定buffer object以后,下1步就是分配GPU存儲空間了:

void glBufferData(GLenum target, GLsizeiptr size,const void *data, GLenum usage);
  • size: 緩存大小,單位 byte
  • data: 用來初始化緩存的原始數據指針,當為NULL時,緩存不會被初始化,但是空間已分配。

分配好空間的buffer object 可使用以下函數更新緩存:

void glBufferSubData(GLenum target, GLintptr offset,GLsizeiptr size, const void *data);

我們知道當targetGL_ARRAY_BUFFER時,我們稱這個buffer object 為Vertex Buffer Object(VBO), 本文重點要論述的則是GL_PIXEL_UNPACK_BUFFER對應于Pixel Buffer Object(PBO),我們在向texture上傳/填充數據的時候數據來源可以直接位于GPU中.


更新PBO緩沖區

PBO作為buffer object, 我們可以通過memory map的方式直接得到PBO的指針:

void* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
  • target: GL_PIXEL_UNPACK_BUFFER
  • offset: offset in bytes into the buffer data store
  • length: number of bytes of the buffer data to map
  • access: a bitfield combination of access flags

函數所返回的指針可以用來更新PBO的內容。當更新終了以后我們需要調用相應的unmap函數唆使數據更新已完成并釋放指針。

GLboolean glUnmapBuffer(GLenum target);

使用PBO緩存作為texture像素數據

調用texture填充函數更新texture像素信息:

glTexImage*, glTexSubImage*, glCompressedTexImage*, glCompressedTexSubImage*

GL_PIXEL_UNPACK_BUFFER綁定有效的PBO時,這些函數都直接從PBO獲得數據源,而不用從系統內存上傳數據到GPU. 由于數據已位于GPU,這些函數會立即返回,因此使用這類方式更新texture數據非常高效,固然條件條件是性能非常重要或內存使用有限制的情況下才應當斟酌這類方法!


總結

最后總結1下:

  • 創建,綁定,分配PBO存儲.
  • map PBO memory
  • update PBO memory
  • unmap PBO memory
  • 更新texture 數據
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品久久久久一区二区三区 | 欧美日韩亚洲综合另类ac | 老司机免费福利视频无毒午夜 | 国产人成精品免费视频 | 精品一区二区三区免费站 | 夜夜嗨视频 | 最近免费中文字幕大全高清mv | 呦女亚洲一区精品 | 欧美日韩亚洲综合久久久 | 亚洲精品人成网在线播放影院 | 亚洲天堂影院 | 久久天天躁狠狠躁夜夜 | 国产精品一区二区在线观看 | 在线观看视频中文字幕 | 精品第一页 | 女bbbbxxxx毛片视频0 | ffee性xxⅹ另类老妇hd | 五月丁香六月综合缴清无码 | 亚洲天砖砖区免费 | 国产亚洲欧美一区 | 福利视频播放 | 久久久久国产精品免费 | 最近免费中文字幕4 | 老司机午夜性大片 | 真人肉体一级毛片 | 校园春色 亚洲色图 | 国产成人综合亚洲亚洲欧美 | 欧美亚洲日本一区二区三区浪人 | 日韩精品欧美激情亚洲综合 | 噜噜啪啪 | 国产乱码精品一区二区三区四川 | 淫片免费 | 国产成年网站v片在线观看 国产成人 免费观看 | www.夜| 亚洲精品视频在线播放 | 国产产一区二区三区久久毛片国语 | 亚洲国产欧美日韩精品小说 | 高清视频一区二区 | 黑人太大太粗受不了了 | 成人中文字幕在线 | 伊人影院在线视频 |