名称
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/es2.0/xhtml/glBindFramebuffer.xml
https://blog.csdn.net/flycatdeng
Copyright © 1991-2006 Silicon Graphics, Inc.本文档的许可是根据SGI Free Software B License.详见http://oss.sgi.com/projects/FreeB/.
