gpt4 book ai didi

opengl - 在 OpenGL 中处理 FBO 的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 20:29:18 30 4
gpt4 key购买 nike

很长一段时间以来,我一直想知道处理 OpenGL 帧缓冲区对象 (FBO) 的最佳方法是什么。
切换 FBO 的成本可能很高,但也会定义新的附件。

你是怎么做到的 ?

我在这三个之间犹豫:

  • 1 个 FBO 用于所有内容,更改附件但不要在 FBO 之间切换
  • 渲染路径中每个渲染目标(大小 + 格式)的 1 个 FBO。这意味着我将为类似的渲染目标重用相同的 FBO。但这种方式自定义模糊将花费 4+ FBO。
  • 每个渲染目标1个FBO,只设置一次附件,然后在FBO之间切换

  • 另外,我应该尽量减少 FBO 开关的数量(就像我尽量减少纹理绑定(bind)的数量一样)?

    最佳答案

    更新的引用资料:

  • NVIDIA 2016 (?) : 使用多个 FBO
  • intel 2016 : 使用多个 FBO


  • NVIDIA 2005( 可能已过时 ):
    我所知道的 NVIDIA 上一次官方性能推荐已经快五年了。在他的 GDC presentation , Simon Green 推荐以下内容(幻灯片 29):

    In order of increasing performance:

    1. Multiple FBOs
      • create a separate FBO for each texture you want to render to
      • switch using BindFramebuffer()
      • can be 2x faster than wglMakeCurrent() in beta NVIDIA drivers
    2. Single FBO, multiple texture attachments
      • textures should have same format and dimensions
      • use FramebufferTexture() to switch between textures
    3. Single FBO, multiple texture attachments
      • attach textures to different color attachments
      • use glDrawBuffer() to switch rendering to different color attachments


    以我的经验,第二种情况确实比第一种更快(ATI Radeon HD4850,Geforce 8800GT)。我没有尝试过第三种情况,因为它会使我的代码复杂化。

    关于opengl - 在 OpenGL 中处理 FBO 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2198541/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com