优化动态壁纸

时间:2011-06-16 01:48:06

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

我发现每当我创建动态壁纸时,事情就会开始滞后。例如,当在屏幕之间切换时,动画滞后。在我见过的许多其他壁纸中,图形要求更高的壁纸,实际上没有任何延迟。从我所看到的,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
}

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

乔治是对的,如果你还没有,你肯定应该使用https://github.com/markfguerra/GLWallpaperService作为你的GL /壁纸后端。

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