OpenGL FBO渲染缓冲或纹理附件

Sky*_*leh 20 opengl

在什么情况下我想在OpenGL FBO中使用renderbuffer附件,而不是纹理附件,除了默认的帧缓冲区?因为,纹理附件看起来更加通用.

kva*_*ark 23

纹理为您提供更多功能(采样!,格式多样),因此更容易受到性能损失的影响.

答案很简单:在任何地方使用纹理从表面采样(无替代方案).

在任何不需要采样的地方使用渲染缓冲区.根据您表示的不进行采样的意图,驱动程序可能会也可能不会决定更有效地存储像素数据.之后您可以使用GL blitting对结果执行某些操作.

  • 最后,对这个简单问题的一个好的,直接的答案.谢谢.似乎很多人只对这个主题发表了无意义的评论(换句话说 - 他们不知道). (2认同)
  • @ bluenote10 by"sampling"我的意思是在着色器中查询纹理的特定值.有关详细信息,请参阅https://www.opengl.org/wiki/Sampler_%28GLSL%29上的"纹理查找功能".例如,如果您需要模糊某些内容,则着色器通常会对像素区域进行采样并对其进行加权,因此您需要纹理源.在另一种情况下,如果您只想使用深度测试绘制某些内容,则可以使用深度渲染缓冲区. (2认同)