【发布时间】:2011-12-21 09:00:34
【问题描述】:
我正在尝试将各种场景渲染为一组纹理,每个场景都有自己的纹理到应该绘制的位置...
问题:
创建 512 个 FBO,每个 FBO 绑定了 512 个纹理,这有多糟糕。只使用一个FBO不是更好吗,在这种情况下我需要解绑之前绑定到FBO的纹理,我该怎么做,还是应该坚持512个FBO?
【问题讨论】:
标签: opengl
我正在尝试将各种场景渲染为一组纹理,每个场景都有自己的纹理到应该绘制的位置...
问题:
创建 512 个 FBO,每个 FBO 绑定了 512 个纹理,这有多糟糕。只使用一个FBO不是更好吗,在这种情况下我需要解绑之前绑定到FBO的纹理,我该怎么做,还是应该坚持512个FBO?
【问题讨论】:
标签: opengl
您通过将零纹理附加到相同的附加点来分离当前附加的纹理(参见规范的第 4.4 章)。
我无法确定分离和重新附加纹理是否会更快或切换帧缓冲区对象,因为这取决于实现。
但是,从概念上讲,附加和分离纹理意味着必须在驱动程序中进行两倍的库调用和两倍的帧缓冲区完整性检查,所以我认为使用多个 FBO 会更快(尽管 512 是一个惊人的数字!)。
但是,一个实现很可能会以一种惰性的方式进行这些检查(在触摸任何附件之后的任何时间,并且就在第一个绘制命令发生之前),因此无法确定。
【讨论】:
仅使用一个 FBO,并为其附加纹理。当您附加另一个纹理时,原始纹理不会从 FBO 附加。
此外,您可以将纹理 ID 0 附加到 FBO 以从 FBO 取消附加当前纹理。
【讨论】: