此问题与OpenGL ES 2.0扩展EXT_discard_framebuffer有关。
我不清楚哪些案例证明使用此扩展是合理的。如果我调用glDiscardFramebufferEXT()并将指定的可附加图像置于未定义状态,则意味着:
- 我不再关心内容了,因为它已经与glReadPixels()一起使用了,
- 我不再关心内容,因为它已经与glCopyTexSubImage()一起使用了,
- 我不应该首先制作渲染。
显然,只有前两种情况有意义或者其他情况下glDiscardFramebufferEXT()是否有用?如果是,这些情况是什么?
答案 0 :(得分:6)
glDiscardFramebufferEXT是对驱动程序的性能提示。移动GPU使用基于图块的延迟渲染。在该上下文中设置要丢弃的任何帧缓冲区都会保存gpu工作和内存带宽,因为它不需要将其写回统一内存。
通常你会丢弃:
此外,任何刚用于在GPU上渲染的缓冲区都应该被丢弃,因此不会将其写回统一内存。
答案 1 :(得分:2)
我见过使用DiscardFramebuffer的主要情况是当你有一个多采样渲染缓冲区,你刚刚使用BlitFramebuffer或ResolveMultisampleFramebufferAPPLE(在iOS上)解析为纹理,在这种情况下你不再关心原始内容缓冲液中。