我一直在尝试在我们使用 GLES 3 的应用程序中实现渲染到纹理的方法,并且我已经让它工作了,但我对帧速率下降有点失望。
到目前为止,我们一直在直接渲染到主 FBO,它是使用 EGL_SAMPLES=8 创建的多重采样 FBO。
我想要的基本上是能够在我仍在绘制的同时获取已经绘制的像素。所以我认为应该使用渲染到纹理的方法。然后我会随时阅读屏幕外 FBO 纹理的一部分,当我完成对它的渲染时,我会将整个内容传送到主 FBO。
深入研究这一点,我发现我必须实现一个具有多重采样 FBO 和非多重采样纹理 FBO 的系统,其中我必须解决多重采样的 FBO。然后只需将已解析到主 FBO 即可。
这一切都有效,但问题是通过使用上述系统和非多重采样主 FBO (EGL_SAMPLES=0),与仅使用带有 EGL_SAMPLES= 的主 FBO 时获得的帧速率相比,我得到了相当大的帧速率下降8.
深入研究这一点,我发现人们在线报告以及此处的帖子https://community.arm.com/thread/6925说最快的多重采样方法是使用 EGL_SAMPLES。事实上,这也是我们的目标板 jetson tk1 上的样子。
这最终将我引向了这个问题,并为冗长的介绍道歉:
有什么方法可以设计它以使用非多重采样的屏幕外 fbo 进行最终被传送到使用 EGL_SAMPLES 的主多重采样 FBO 的所有渲染?