【问题标题】:Android Live Wallpapers with OpenGL ES 2.0?带有 OpenGL ES 2.0 的 Android 动态壁纸?
【发布时间】:2011-02-14 23:29:35
【问题描述】:

有没有人设法让 OpenGL ES 2.0 在动态壁纸中运行?我有一个使用 OpenGL ES 2.0 的类,并且作为 GLSurfaceView 的渲染器运行良好。但是,我希望它可以用作动态壁纸。我找到了 Robert Green 的 GLWallpaperService,但它基于旧版本的 GLSurfaceView,不支持运行 OpenGL ES 2.0 所需的 setEGLContextClientVersion。

【问题讨论】:

  • 感谢您的链接,我一直在寻找相同的 :)
  • @MJP:太好了!请通过链接回答您自己的问题。
  • 您能否将您的解决方案作为答案发布在下方,以便我们将其从未回答列表中删除?谢谢。

标签: java android opengl-es-2.0


【解决方案1】:

我已经设法通过扩展 GLSurfaceView 并将其包装在墙纸服务中来使基于 opengl 的 LWP 工作。我没有专门测试过 opengl es 2.0 是否可以使用这种方法,但我看不出有什么理由不能。

您可以在 https://github.com/JesusFreke/Penroser/tree/master/src/org/jf/GLWallpaper 找到 LWP 特定文件。它们应该是通用的并且可以在其他项目中按原样使用。有关如何使用这些类的示例,请参阅https://github.com/JesusFreke/Penroser/blob/master/src/org/jf/Penroser/PenroserLiveWallpaper.java

【讨论】:

  • 在阅读 GLSurfaceView 源代码一段时间后,我最终得到了一些类似的实现/想法,以获得对 WallpaperService 的 OpenGL 支持。但是评论你的答案的原因是我认为你在你的 GLWallpaper 实现中失去了 GLThread 。它仅在 GLSurfaceView.onDetachedFromWindow() 被调用(或者在这种情况下您可以手动调用它)时被杀死,onSurfaceDestroyed() 仅将其置于等待状态。
  • @harism - 你是如何以不同的方式实现它的?我与 JesusFreke 的墙纸服务合作了一段时间,效果很好。唯一的问题是从预览模式应用壁纸时,GLThread 有时会抛出异常,但我不知道如何解决它。
  • @Daniel Schuler 唯一的区别是我为 GLSurfaceView 实现了一个onDestroy() 方法,它被简单地写成void onDestroy() { super.onDetachedFromWindow() }。调用它会杀死底层的 GL 线程,否则它会在后台处于空闲状态。不知道它是否与您面临的问题有任何关系。
【解决方案2】:

this blog post 处的代码使 Robert Green 的 GLWallpaperService 适应 OpenGL ES 2.0。使用它可能会取得一些成功,但是使用 JesusFreke 的实现可能会更简单。

如果您成功改进了 GLWallpaperService,请submit your changes back to the project,以便我们都能受益。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    相关资源
    最近更新 更多