客户端、pbo、fbo、texture之间数据传输特点

本文探讨了在OpenGL中,客户端、PBO(像素缓冲对象)、纹理内存和帧缓存之间的数据传输方式。重点指出PBO作为数据传输核心,通过gl*Data和gl*Image等函数实现pack和unpack操作。特别地,PBO到纹理的数据传输优先级高于客户端到PBO的传输。当指定非零的PBO时,数据会直接从PBO拷贝,而非客户端指针。
摘要由CSDN通过智能技术生成

客户端、缓冲区、纹理内存以及帧缓存之间数据传输方式如下。



从图中可以看中,PBO在数据传输中起到核心作用。其核心作用表现在以下两点:

一、client、texture、framebuffer(render buffer)与pbo可分别通过glbufferdata(),glgetteximage(),glreadpixel()进行pack操作以及分别通过glmapbuffer(),glteximage(),glwritepixel()进行unpack操作。

二、pbo与texture之间的数据传输“优先级”要高于client与pbo之间的数据传输。例如:

	glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB,pboID);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
		width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);

此时如果pboID不为0,则数据不会从客户端指针data进行拷贝,而是从pbo进行拷贝

If a non-zero named buffer object is bound to the GL_PIXEL_UNPACK_BUFFER targe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值