我可以在 Android 上有两个屏幕大小的乒乓帧缓冲区吗?

Can I have two ping-pong framebuffers of screen size on Android?

我在 Android 上的 OpenGL ES 应用程序中需要有两个乒乓帧缓冲区。我还需要它们与设备屏幕大小相同。深度缓冲区和模板缓冲区都不会附加到它们,只有 RGBA8888 颜色缓冲区。

我打算用它们来添加一些类似 Photoshop 的混合模式(颜色加深、叠加等)

我能在大多数现代设备(如上面所说的 Android 3.0、OpenGL ES 2.0)上负担得起吗?如果不是,那为什么?以及如何确定我何时可以创建先于它们的创建?

我认为对于 Android 3.0 以上的设备,我认为这应该是相当安全的假设,我认为它们都应该是 运行ning OpenGLES 2.0?

你的瓶颈将是内存(虽然我认为不太可能 运行 在这里)和你需要 ping pong 这些缓冲区的任何东西的复杂性。我使用 OpenGLES 2.0 将 this fluid simulation 移植到 Android,OpenGLES 2.0 严重依赖乒乓帧缓冲区来执行模拟更新。

我在 Samsung Galaxy S4 和 Nexus 7 (2012) 上有 6 个左右的全屏帧缓冲区,所有这些都创建得很好。我的问题是模拟本身非常复杂,这些设备无法执行。

我无法想象内存会成为 2 个全屏缓冲区的问题,而且性能可能还不错,具体取决于您渲染它们的频率。

不确定这有多大帮助,因为这完全取决于您的使用情况。

当您尝试将 glFramebufferTexture2D returns 附加到您的 FBO 以检查设备是否可以处理它时,您能检查一下吗?