OpenGL Framebuffer Object (FBO)

本文详细介绍了OpenGL中的Framebuffer Object (FBO),包括关键词定义、FBO的绑定、attachment点、texture类型回顾、如何将texture和renderbuffer附着到FBO,以及检查FBO的完整性与进行framebuffer blits操作。FBO允许开发者创建离屏渲染目标,提高了图像处理的灵活性。
摘要由CSDN通过智能技术生成

在OpenGL中, OpenGL Context有一个默认的FBO用来绘制图像, 但是我们也可以创建新的用户定义的Framebuffers, 这样我们可以绘制到自定义的framebuffer, 而不会影响到窗口系统。


关键词定义

  • Image: 本文中, Image是包含像素的二维数组,这些像素具有特定的存储格式。
  • Layered Image: 具有某一特定尺寸和格式的一套images, 对应于texture的某一个mipmap level. (注意 layered image不是一个人在战斗,而是一整套的images!)
  • Texture: 表示一系列的images的集合。所有的image具有相同的格式, 但是尺寸不一样(不同的mipmap level). Texture 可以绑定(bind)到 shaders.
  • Renderbuffer: 包含一个image, 不可以绑定(bind)到shaders, 只能附着(attach)到FBO.
  • Framebuffer-attachable image: 可附着到FBO的image
  • Framebuffer-attachable layered image: 可附着到FBO的layered image.
  • Attachment point: FBO中一个署名的附着点,可用来附着(attach) framebuffer-attachable image 和 framebuffer-attachable layered image. 对于附着(attach)的image,要求具有特定的格式。
  • Attach: 附着是表示将两个物体连系起来, 和绑定(bind) 是不一样的。 一个物体被绑定(bind)到context, 但是物体与物体则是相互附着(attach).

绑定FBO

和其它 OpenGL object一样,FBO有以下的相关函数:

void glGenFramebuffers(GLsizei n, GLuint* framebuffers);
void glDeleteFramebuffers(GLsizei n, GLuint* framebuffers);
void glBindFramebuffer(GLenum target, GLuint framebuffer);
  • 其中的target参数可以是:

    • GL_FRAMEBUFFER
    • GL_READ_FRAMEBUFFER
    • GL_DRAW_FRAMEBUFFER

    GL_READ_FRAMEBUFFER:当target设置为GL_READ_FRAMEBUFFER时, framebuffer参数所指代的FBO变成读操作的目标,如glReadPixels, glCopyTexImage2D, glCopyTexSubImage2D.
    GL_DRAW_FRAMEBUFFER: 当target 设置为 GL_DRAW_FRAMEBUFFER

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值