日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

直接Stream Video到GPU Texture 內存

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

在某些場合需要快速的將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 數據
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 99精品国产热久久91蜜凸 | 国产精品久久久久久久久久免费看 | 精品一区二区不卡 | 午夜在线免费观看视频 | 精产国产伦理一二三区 | 日韩av成人在线观看 | 日日夜夜草| 黄色毛片一级片 | 国内精品一区二区三区 | 成人在线高清 | 五月婷婷中文字幕 | 欧美日韩中文 | 久久国产欧美一区二区三区免费 | 久久一区二 | 精品一二区 | 人人人人人人 | 99久久国 | 久久精品99国产精品酒店日本 | 懂色av 粉嫩av 蜜乳av | 亚洲免费观看视频 | 九一毛片 | 中文字幕精品一区二区三区精品 | 91久久国产综合久久91精品网站 | 日韩在线三区 | 日韩高清在线播放 | 综合精品 | 亚洲美女av在线 | 午夜一区二区三区 | 亚洲激情在线观看 | 久久久久久久国产精品视频 | 久久久久无码国产精品一区 | 一区二区三区在线视频播放 | 国产精品一区二区三区久久久 | 性感美女一级毛片 | 综合久久久久综合 | 99久久无色码中文字幕婷婷 | 精品99在线| 欧美一区二区三区在线视频 | 99精品视频在线免费观看 | 久久97精品 | aaaaaa视频|