pon*_*nce 15 opengl fbo rendering gpu
我很想知道很长一段时间处理OpenGL FrameBuffer对象(FBO)的最佳方法.切换FBO可能成本很高,但也定义了新的附件.
你怎么快速做到的?
我在这三个之间犹豫不决:
1 FBO用于所有内容,更改附件但不要在FBO之间切换
1渲染路径中每个渲染目标(大小+格式)的FBO.这意味着我将为相似的渲染目标重用相同的FBO.但这样一种自定义模糊将花费4+ FBO.
每个渲染目标1个FBO,仅设置附件一次,然后在FBO之间切换
另外,我应该最小化FBO开关的数量(比如我最小化纹理绑定的数量)?
Mal*_*sen 14
更新的参考:
NVIDIA 2005(可能已经过时):我所知道的NVIDIA上一次官方性能推荐已经差不多五年了.在他的GDC演讲中,Simon Green建议如下(幻灯片29):
为了提高性能:
- 多个FBO
- 为要渲染的每个纹理创建单独的FBO
- 切换使用
BindFramebuffer()
- 可以比
wglMakeCurrent()
beta NVIDIA驱动程序快2倍- 单个FBO,多个纹理附件
- 纹理应具有相同的格式和尺寸
- 用于
FramebufferTexture()
在纹理之间切换- 单个FBO,多个纹理附件
- 将纹理附加到不同的颜色附件
- 用于
glDrawBuffer()
将渲染切换到不同的颜色附件
根据我的经验,第二种情况比第一种情况要快(ATI Radeon HD4850,Geforce 8800GT).我没有尝试过第三种情况,因为它会使我的代码变得复杂.
归档时间: |
|
查看次数: |
6903 次 |
最近记录: |