【问题标题】:Android OpenGl Es 2.0 live wallpaper textures and bitmapsAndroid OpenGL Es 2.0 动态壁纸纹理和位图
【发布时间】:2014-03-12 02:12:47
【问题描述】:

我正在使用 opengl es 2.0 开发动态壁纸,我想知道是否有办法在创建渲染器或位图时保持加载纹理,这样它们就不需要在每次屏幕方向更改时重新创建,或屏幕熄灭时。 我已经用缓冲区(索引等)做到了这一点,但纹理和位图正在回收。

【问题讨论】:

    标签: android bitmap textures opengl-es-2.0 live-wallpaper


    【解决方案1】:

    您遇到的行为是 Android 中 OpenGL 应用程序标准生命周期行为的一部分。

    在 30:29 的 Google I/O 视频中有很好的解释

    http://developer.android.com/videos/index.html#v=5yorhsSPFG4

    无论如何,GPU中的内存需要重新初始化,并不意味着你需要从头开始重新加载。

    您可以通过执行以下操作获得相当不错的性能:

    1. 在启动时将所有内容加载到内存中(VBO + 纹理 + 索引 + 等)

    2. 每次从分配的系统内存(点 1)取回上下文到 GPU 时,加载 GPU 内存并绑定

    这样一石二鸟,你可以保证你的资源一直保持良好的可用状态,并且每次“回到上下文”发生时都不会给加载时间带来负担。

    【讨论】:

    • 感谢您的回复,我以为我的问题就是您所描述的。你能告诉我当你说将纹理加载到内存以便我每次返回上下文时都可以使用它们,你是怎么做的?正在回收的对象不仅是 opengl 纹理,还有位图,那么例如从 png 文件加载什么?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多