2011-01-24 76 views
6

我正在考虑重构我的渲染代码的大部分,并且弹出一个问题: 是否可以在帧缓冲区对象中使用多个颜色附件渲染屏幕和纹理?即使它有许多有用的应用程序,我也无法找到任何信息。我想它应该足以将我的纹理作为颜色attachment0和renderbuffer 0绑定到attachment1上?是否可以将默认渲染缓冲区附加到FBO?

例如,我想创建一个交互式应用程序,您可以在3D模型上“绘制”。我通过将UV坐标渲染到纹理来解决用户绘制的位置,以便我可以查看修改纹理的鼠标坐标。在我的情况下,有一个着色器可以最快速地渲染UV纹理和实际纹理到屏幕。

有没有更好的方法来做到这一点,或我在正确的轨道上?

回答

6

在OpenGL中没有“default renderbuffer”这样的东西。有窗口系统提供默认帧缓冲区保留名称为零,但基本上意味着“没有启用FBO”。所以不行,不幸的是,正常的OpenGL没有提供任何方法来以某种方式将其颜色缓冲区用作任何其他FBO的颜色附件。我不知道有可能提供此功能的任何扩展程序。

使用渲染缓冲区还有保留名称零,但它只是一个特殊的“无”变量,并允许解除渲染缓冲区的绑定。

+3

的确如此。 glspec的第4.4节中提到:“最初,GL使用默认帧缓冲区,连接到这个帧缓冲区的图像的存储,尺寸,分配和格式完全由窗口系统管理,因此默认帧缓冲区的状态,包括其图像,不能被GL改变,也不能由GL删除默认帧缓冲区。“ – 2011-01-24 13:15:42

相关问题