openGL之API学习(六)如何绑定深度缓冲区到片元着色器

本文介绍了OpenGL中的帧缓冲对象(FBO)及其用途,特别是如何将深度缓冲区绑定到FBO,以实现离屏渲染。FBO允许附加颜色、深度和模板缓冲区,为3D渲染提供灵活的中间处理步骤。深度缓冲区对于3D场景的正确渲染至关重要,通过glBindFramebuffer()函数可以将深度缓冲区与FBO关联,用于存储片元着色器的深度测试结果。
摘要由CSDN通过智能技术生成

本质是使用帧缓冲区glBindFramebuffer(GL_FRAMEBUFFER, m_fbo),深度缓存是帧缓冲区的一个挂载点

在OpenGL中3d管线输出的结果称为‘帧缓冲对象‘(简称FBO)。FBO可以挂载颜色缓冲(在屏幕上显示)、深度缓冲区和一些有其他用处的缓冲区。当glutInitDisplayMode()被调用的时候,它使用一些特定的参数来创建默认的帧缓存,这个帧缓存被窗口系统所管理,不会被OpenGL删除。除了默认的帧缓存,应用程序可以创建自己的FBOs。在应用程序的控制下,这些对象可以被操作以用于不同的技术当中。

注意只有默认的帧缓存才可以在屏幕上显示。应用程序创建的帧缓存只能用于”离屏渲染“,这个可以说是一个中间的渲染过程(比如我们的阴影图缓冲区),稍后可以用于屏幕上的“真实”渲染通道。

就其本身而言,帧缓存只是一个占位符,为了使它变得可用,我们需要把纹理依附于一个或者更多的可用的挂载点,纹理含有帧缓存实际的内存空间。OpenGL定义了下面的一些附着点:

  • COLOR_ATTACHMENTi:附着到这里的纹理将接收来自片元着色器的颜色。‘i’ 后缀意味着可以有多个纹理同时被附着为颜色附着点。在片元着色器中有一个机制可以确保同时渲染多个颜色到缓冲区。
  • DEPTH_ATTACHMENT:附着在上面的纹理将收到深度测试的结果。
  • STENCIL_ATTACHMENT:附着在上面的纹理将充当模板缓冲区。模板缓冲区限制了光栅化的区域,可被用于不同的技术。
  • DEPTH_STENCIL_ATTACHMENT:这仅是一个深度和模板缓冲区的结合,因为它俩经常被一起使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值