是否可以将默认渲染缓冲区附加到FBO?

And*_*dos 7 opengl fbo

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

例如,我想创建一个交互式应用程序,您可以在其中"绘制"3D模型.我通过将UV坐标渲染到纹理来解决用户绘制的位置,这样我就可以查看鼠标坐标在哪里修改纹理.在我的情况下,最好有一个着色器,它既可以在一次通过中将UV拉伸到纹理,也可以将实际纹理绘制到屏幕上.

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

Ton*_*ttu 6

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

对于渲染缓冲区,还有保留名称为零,但它只是一个特殊的"无"变量,并允许解除绑定渲染缓冲区.

  • 确实.glspec的4.4节说:"最初,GL使用默认的帧缓冲.附加到此帧缓冲区的图像的存储,尺寸,分配和格式完全由窗口系统管理.因此,默认帧缓冲区的状态,包括其图像在内,不能由GL更改,也不能由GL删除默认的帧缓冲区." (4认同)