OpenGL ES 3.0(六)缓冲区对象、PBO、FBO

本文详细介绍了OpenGL ES 3.0中的缓冲区对象,包括如何创建、绑定和删除,以及PBO(像素缓冲区对象)的使用,阐述了PBO在提升GPU数据传输效率中的作用。此外,还深入讲解了FBO(帧缓冲区对象)的创建、绑定、读取和纹理附件,以及如何利用glDrawBuffers和glBlitFramebuffer优化像素数据的处理和传输。
摘要由CSDN通过智能技术生成

缓冲区对象

创建:

Gluint pixBuffObjs[1];
glGenBuffers(1, pixBuffObjs);

绑定:

glBindBuffer(GL_PIXEL_PACK_BUFFER, pixBuffObjs[0]);

缓冲区对象的绑定点有:

Target Name Description
GL_ARRAY_BUFFER 用于存储顶点属性,比如颜色、位置、纹理坐标等
GL_COPY_READ_BUFFER glCopyBufferSubData 的数据源
GL_COPY_WRITE_BUFFER glCopyBufferSubData 的目标
GL_ELEMENT_ARRAY_BUFFER 用于保存 glDrawElements, glDrawRangeElements, and glDrawElementsInstanced 的索引
GL_PIXEL_PACK_BUFFER 读取像素数据的源缓冲区(比如 glReadPixels)
GL_PIXEL_UNPACK_BUFFER 纹理更新的源缓冲区,比如 glTexImage1D, glTexImage2D, glTexImage3D, glTexSubImage1D, glTexSubImage2D, and glTexSubImage3D
GL_TEXTURE_BUFFER Buffer accessible to shaders through texel fetches
GL_TRANSFORM_FEEDBACK_BUFFER Buffer written to by a transform feedback vertex shader
GL_UNIFORM_BUFFER Uniform values accessible to shaders

删除:

glDeleteBuffers(1, pixBuffObjs);

填充缓冲区:

glBufferData(GL_PIXEL_PACK_BUFFER, pixelDataSize, pixelData, GL_DYNAMIC_COPY);

在使用 glBufferData 之前,必须先进行绑定。如果要分配一个特定大小的缓冲区,而不需要对它进行填充,则 pixelData 可以为 NULL。第四个参数可能的值为:

Buffer Usage Description
GL_STREAM_DRAW 缓冲区内容将由应用程序设置一次,并且不经常用于绘图
GL_STREAM_READ 缓冲区内容将被设置一次,作为
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值