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

客户端、缓冲区、纹理内存以及帧缓存之间数据传输方式如下。客户端、pbo、fbo、texture之间数据传输特点_第1张图片



从图中可以看中,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 target (see glBindBuffer) while a texture image is specified, data is treated as a byte offset into the buffer object's data store.


三、client 与texture client->texture为unpack 

你可能感兴趣的:(客户端、pbo、fbo、texture之间数据传输特点)