客户端、缓冲区、纹理内存以及帧缓存之间数据传输方式如下。
从图中可以看中,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