0

我有一个使用 OpenGL ES 1.1 的 Android java 应用程序,我遇到了以下问题: 当应用程序最小化时,onPause()在活动上被调用。在这一点上,我想保留其中一个 GL 纹理(我渲染的东西)并将其保存在内存中,同时销毁 openGL 上下文。然后当应用程序恢复时,我可以恢复我的纹理。但是,检索 openGL 纹理需要只能由渲染线程完成的 GL 命令,在停止之前可能有也可能没有更多的渲染迭代。

有没有已知的方法来处理这个?

4

1 回答 1

1

在 Java 中执行此操作的最简单方法是使用 glReadPixels() 将纹理图像复制到 Android 位图。您首先必须将纹理渲染到帧缓冲区或附加到 FBO 的 RenderBuffer 中。这种方法会很慢,因为 glReadPixels() 非常慢。此外,Bitmap 类不能正确处理 alpha 纹理图像,除非它们完全不透明。位图将它们转换为预乘格式。

更好的方法是使用仍然必须调用 glReadPixels() 的本机代码,但可以将图像存储在普通内存缓冲区中而无需格式转换。

于 2013-08-27T05:52:21.943 回答