opengl - 如何从帧缓冲区取消绑定(bind)纹理

标签 opengl

我正在尝试将各种场景渲染为一组纹理,每个场景都有自己的纹理到应该绘制的位置......

问题:

创建 512 个 FBO,每个 FBO 绑定(bind)了 512 个纹理,这有多糟糕。只使用一个 FBO 不是更好吗,在这种情况下,我需要取消绑定(bind)之前绑定(bind)到 FBO 的纹理,我该怎么做,还是应该坚持使用 512 个 FBO?

最佳答案

您可以通过将零纹理附加到相同的附加点来分离当前附加的纹理(参见规范的第 4.4 章)。

我无法确定分离和重新附加纹理是否会更快或切换帧缓冲区对象,因为这取决于实现。
但是,从概念上讲,附加和分离纹理意味着必须在驱动程序中进行两倍的库调用和两倍的帧缓冲区完整性检查,所以我认为使用多个 FBO 会更快(尽管 512 是一个惊人的数字!)。

然而,很可能,一个实现可能会以一种惰性的方式进行这些检查(在触摸任何附件之后的任何时间,并且就在第一个绘制命令发生之前),因此无法确定。

关于opengl - 如何从帧缓冲区取消绑定(bind)纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6737613/

相关文章:

opengl - 测试着色器的兼容性

贝塞尔曲线的 OpenGL 坐标

c++ - 我可以在调用 glDrawArrays 后删除 OpenGL 顶点数组吗?

opengl - OpenGL 是否钳制每个纹理阶段的输出?

c++ - SDL2/OpenGL3无法显示任何内容

python - 使用 OpenGL 在 Python 中进行 3d 绘图

opengl - 如何在软件仿真模式下启动OpenGL?

c++ - 移动立方体和纹理坐标的问题

c++ - 尝试将库链接到使用 OpenGL 的文件,而链接器无法找到 GL 相关文件

c++ - 渲染调用对性能的影响