FBO附着Texture相关

一、用法

纹理(texure)附着于帧缓冲对象(FBO),用于渲染目标,可用于shader采样。
选择渲染缓冲区与纹理作为帧缓冲区附着的对比:

  • 渲染缓冲区支持多重采样。1
  • 性能上渲染缓冲区可能优于纹理。2
  • 纹理可用于shader采样,渲染缓冲区不可以。这意味着texture可用于后续处理。
二、实例

1、生成FBO和纹理

2、附着

代码如下3

//创建一个帧缓冲对象,并绑定
unsigned int framebuffer;
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);

// 生成一个纹理,并绑定
unsigned int textureColorbuffer;
glGenTextures(1, &textureColorbuffer);
glBindTexture(GL_TEXTURE_2D, textureColorbuffer);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, SCR_WIDTH, SCR_HEIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

//将它附加到当前绑定的帧缓冲对象
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textureColorbuffer, 0);
  • void glBindFramebuffer(GLenum target, GLuint framebuffer)

    设置该对象为当前缓冲区对象。(后面对fbo的操作总是在当前缓冲区对象上操作)

  • void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)

    将一个渲染缓冲区对象连接到帧缓冲区附着点。

三、参考

  1. 《OpenGL ES3.0编程指南》第12章 ↩︎

  2. https://www.khronos.org/opengl/wiki/Renderbuffer_Object ↩︎

  3. https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/05%20Framebuffers/#_5 ↩︎

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值