OpenGL帧缓冲:将(渲染缓冲区、纹理)图像附加到帧缓冲区
将渲染缓冲区图像附加到帧缓冲区 Attaching Renderbuffer Images to a Framebuffer
void glFramebufferRenderbuffer( enum target, enum attachment, enum renderbuffertarget, uint renderbuffer );
void glNamedFramebufferRenderbuffer( uint framebuffer, enum attachment, enum renderbuffertarget, uint renderbuffer );
对于FramebufferRenderbuffer
函数,它操作的是绑定到target
参数指定的目标帧缓冲对象。target
必须设置为DRAW_FRAMEBUFFER
、READ_FRAMEBUFFER
或FRAMEBUFFER
,其中FRAMEBUFFER
等同于DRAW_FRAMEBUFFER
。
而对于NamedFramebufferRenderbuffer
函数,framebuffer
参数直接指定了帧缓冲对象的名字。
-
attachment
参数必须设置为帧缓冲对象的一个附件点,例如COLOR_ATTACHMENT0
、DEPTH_ATTACHMENT
、STENCIL_ATTACHMENT
和DEPTH_STENCIL_ATTACHMENT
。 -
renderbuffertarget
必须设为RENDERBUFFER
,而renderbuffer
参数是零或者是一个类型为renderbuffertarget
的渲染缓冲对象的名字。如果renderbuffer
设为零,则忽略renderbuffertarget
的值;如果不为零且函数执行成功,名为renderbuffer
的渲染缓冲对象将被用作帧缓冲对象指定的逻辑缓冲区,并相应地更新帧缓冲对象的状态:指定附件点的FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE
值设置为RENDERBUFFER
,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME
值设置为renderbuffer
,同时所有其他状态值均重置为表23.25中列出的默认值。这一操作不会改变渲染缓冲对象的状态,并且会断开之前与该逻辑缓冲区相连接的所有内容。-
如果关联不成功,则渲染缓冲对象和帧缓冲对象的状态都不发生改变。
-
当调用
*FramebufferRenderbuffer
时,如果传递的渲染缓冲名字为零,则会从当前绑定至目标
-