【发布时间】:2014-03-12 02:12:47
【问题描述】:
我正在使用 opengl es 2.0 开发动态壁纸,我想知道是否有办法在创建渲染器或位图时保持加载纹理,这样它们就不需要在每次屏幕方向更改时重新创建,或屏幕熄灭时。 我已经用缓冲区(索引等)做到了这一点,但纹理和位图正在回收。
【问题讨论】:
标签: android bitmap textures opengl-es-2.0 live-wallpaper
我正在使用 opengl es 2.0 开发动态壁纸,我想知道是否有办法在创建渲染器或位图时保持加载纹理,这样它们就不需要在每次屏幕方向更改时重新创建,或屏幕熄灭时。 我已经用缓冲区(索引等)做到了这一点,但纹理和位图正在回收。
【问题讨论】:
标签: android bitmap textures opengl-es-2.0 live-wallpaper
您遇到的行为是 Android 中 OpenGL 应用程序标准生命周期行为的一部分。
在 30:29 的 Google I/O 视频中有很好的解释
http://developer.android.com/videos/index.html#v=5yorhsSPFG4
无论如何,GPU中的内存需要重新初始化,并不意味着你需要从头开始重新加载。
您可以通过执行以下操作获得相当不错的性能:
在启动时将所有内容加载到内存中(VBO + 纹理 + 索引 + 等)
每次从分配的系统内存(点 1)取回上下文到 GPU 时,加载 GPU 内存并绑定
这样一石二鸟,你可以保证你的资源一直保持良好的可用状态,并且每次“回到上下文”发生时都不会给加载时间带来负担。
【讨论】: