OpenGL:仅使用一个帧缓冲区并切换目标纹理

| 除了使用多个帧缓冲对象之外,我是否还可以仅创建一个并通过在需要时切换目标纹理来达到相同的结果? 在所有情况下这都是一个坏主意吗?如果是,为什么? 我已经在程序的API中实现了功能“ 0”,从逻辑上讲,如果在后台使用了更多的帧缓冲区,它将无法正常工作。然后,我必须完全公开帧缓冲区。     
已邀请:
        FBO本身只是一些逻辑构造,由实现维护,并且只会消耗其参数所需的少量内存。 FBO的主要目的是拥有一个保持一致状态的对象。 每当您更改FBO的结构时,实现都必须检查有效性和完整性。 OpenGL规范没有说明此操作的复杂性,但是可以安全地假设对FBO结构的更改大约是最耗时的操作(可能很大)。 由于FBO本身不消耗值得注意的内存,因此只有附件占用内存(它们是独立的对象),分配多个FBO并切断它们是我的建议。     
        由于人们给出的原因,切换帧缓冲区通常更快。以我的经验,将不同的纹理类型附加到fbos时也会遇到问题(将2D纹理附加到fbo,之前附加了1D纹理,因此附加到fbo的第一个纹理设置了某种目标状态,以后无法更改)。我使用的解决方案是为每种目标类型设置fbo。该错误发生在NVidia Quadro设备上,不确定是否是驱动程序问题。     

要回复问题请先登录注册