GLES3.0中文API-glBindFramebuffer

本文深入解析glBindFramebuffer函数,介绍其如何绑定帧缓冲区对象,以及在OpenGL编程中创建和使用自定义帧缓冲区的过程。文章阐述了帧缓冲区对象与默认窗口系统提供的帧缓冲区之间的区别,以及在绑定不同帧缓冲区时的状态管理和错误处理。

名称

glBindFramebuffer- 绑定一个命名的帧缓冲区对象

C规范

void glBindFramebuffer(GLenum target,

                                            GLuint framebuffer);

参数

target

指定帧缓冲区对象绑定的目标。 符号常量必须是GL_FRAMEBUFFER。

framebuffer

指定帧缓冲区对象的名称。

描述

glBindFramebuffer允许您创建或使用命名的帧缓冲对象。 调用glBindFramebuffer并将目标设置为GL_FRAMEBUFFER,将framebuffer设置为新的绑定了帧缓冲区对象名称的帧缓冲区对象。 绑定帧缓冲区对象时,先前的绑定会自动中断。

帧缓冲区对象对象名称是无符号整数。 保留值零以表示由窗口系统提供的默认帧缓冲区。 帧缓冲区对象对象名称和相应的framebuffer对象内容对于当前GL渲染上下文的共享对象空间是本地的。

您可以使用glGenFramebuffers生成一组新的framebuffer对象名称。

第一次绑定后的帧缓冲对象的状态是三个附着点(GL_COLOR_ATTACHMENT0,GL_DEPTH_ATTACHMENT和GL_STENCIL_ATTACHMENT),每个附加点都以GL_NONE作为对象类型。

当绑定了非零帧缓冲区对象名称,但目标GL_FRAMEBUFFER上的GL操作会影响绑定的帧缓冲区对象,目标GL_FRAMEBUFFER或帧缓冲区详细信息(如GL_DEPTH_BITS)的查询将从绑定的帧缓冲区对象返回状态。 当绑定帧缓冲对象名称为0时,则处于初始状态中,尝试修改或查询目标GL_FRAMEBUFFER上的状态会生成GL_INVALID_OPERATION错误。

当绑定了非零帧缓冲对象名称时,所有渲染到帧缓冲区(使用glDrawArrays和glDrawElements)和从帧缓冲区读取(使用glReadPixels,glCopyTexImage2D或glCopyTexSubImage2D)都使用附加到应用程序创建的帧缓冲区对象的图像而不是 默认窗口系统提供的帧缓冲。

应用程序创建的帧缓冲对象(即具有非零名称的对象)与默认的窗口系统提供的帧缓冲区有几个重要的不同。首先,它们具有用于颜色缓冲器,深度缓冲器和模板缓冲器的可修改的附着点,帧缓冲器可附接的图像可以附着和分离。其次,附加图像的大小和格式完全在GL内控制,并且不受窗口系统事件的影响,例如像素格式选择,窗口大小调整和显示模式改变。第三,当渲染或从应用程序创建的帧缓冲对象读取时,像素所有权测试总是成功(即它们拥有所有像素)。第四,没有可见的颜色缓冲位平面,只有一个“屏幕外”的彩色图像附件,因此没有前后缓冲区或swap。最后,没有多重采样缓冲区,因此依赖于实现的状态变量GL_SAMPLES和GL_SAMPLE_BUFFERS的值对于应用程序创建的帧缓冲区对象都是零。

使用glBindFramebuffer创建的帧缓冲区对象绑定保持活动状态,直到绑定了不同的帧缓冲区对象名称,或者直到使用glDeleteFramebuffers删除绑定的帧缓冲区对象。

注意

依赖于实现的像素深度和相关状态的查询是从当前绑定的帧缓冲对象导出的。 这些包括GL_RED_BITS,GL_GREEN_BITS,GL_BLUE_BITS,GL_ALPHA_BITS,GL_DEPTH_BITS,GL_STENCIL_BITS,GL_IMPLEMENTATION_COLOR_READ_TYPE,GL_IMPLEMENTATION_COLOR_READ_FORMAT,GL_SAMPLES和GL_SAMPLE_BUFFERS。

错误

GL_INVALID_ENUM :target不是GL_FRAMEBUFFER。

相关Gets
glGet 参数GL_FRAMEBUFFER_BINDING

另见

glDeleteFramebuffers,glFramebufferRenderbuffer,glFramebufferTexture2D,glGenFramebuffers,glGet ,glGetFramebufferAttachmentParameteriv,glIsFramebuffer

版权

https://www.khronos.org/registry/OpenGL-Refpages/es3.0/html/glBindFramebuffer.xhtml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值