【问题标题】:Optimizing Live Wallpapers优化动态壁纸
【发布时间】:2011-09-16 00:21:12
【问题描述】:

我发现每当我创建动态壁纸时,事情就会开始滞后。例如,在屏幕之间切换时,动画会滞后。在我见过的许多其他壁纸中,对于图形要求更高的壁纸,几乎没有滞后。据我所知,OpenGL 渲染图形的速度似乎比 Canvas 快得多。

我只想在 2D 中绘制。所以我认为它在 onDrawFrame 方法中是这样的。 谢谢 http://basic4gl.wikispaces.com/2D+Drawing+in+OpenGL

public void onDrawFrame(GL10 gl)
{
    gl.glMatrixMode(GL10.GL_PROJECTION);
    gl.glLoadIdentity();
    gl.glOrthox(0, w, h, 0, 0, 1);
    gl.glMatrixMode(GL10.GL_MODELVIEW);
    gl.glTranslatef(.375f, .375f, 0);
    gl.glDisable(GL10.GL_DEPTH_TEST);
    gl.glClearColorx(162,205,239, 255);//In place of gl.glClear() because I want a differently colored background
}

但在此之后,我不知道如何绘制位图或线条,这基本上是我当前项目所需要的。有人可以告诉我如何完成这些简单的任务吗?另外,如果我完全离开了,有人可以告诉我我做错了什么吗?

【问题讨论】:

    标签: android optimization opengl-es 2d live-wallpaper


    【解决方案1】:

    您需要使用补充包才能在动态壁纸中使用 OpenGL。两个明显的候选者是:

    GLWallpaperService (https://github.com/markfguerra/GLWallpaperService)
    AndEngine (http://code.google.com/p/andenginelivewallpaperextension/)

    【讨论】:

    • 谢谢!我想我会选择 GLWallpaperService。
    【解决方案2】:

    George 是对的,如果您还没有这样做,那么您绝对应该将https://github.com/markfguerra/GLWallpaperService 用于您的 GL/壁纸后端。

    另外,你不应该在 onDraw 中设置你的投影(每帧都会发生),你应该在 onSurfaceChanged() 中进行设置(因为你只需要在你的视图改变时这样做),这可能会导致你看到的滞后。查看this tutorial series 让您的脚湿透。

    【讨论】:

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