1

我发现每当我创建动态壁纸时,事情就会开始滞后。例如,在屏幕之间切换时,动画会滞后。在我见过的许多其他壁纸中,对于图形要求更高的壁纸,几乎没有滞后。据我所知,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
}

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

4

2 回答 2

1

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

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

于 2011-06-16T06:00:14.560 回答
1

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

此外,您不应该在 onDraw 中设置投影(每帧都会发生),您应该在 onSurfaceChanged() 中进行设置(因为您只需要在视图更改时执行此操作),这可能会导致您的延迟重看。看看这个教程系列,让你的脚湿透。

于 2011-06-16T13:43:39.733 回答