2011-06-16 98 views
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 
} 

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

回答

1

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

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

+0

谢谢!我想我会去GLWallpaperService。 – GuyWhoNeedsHelp 2011-06-16 16:35:53

1

乔治是正确的,如果你还没有,你肯定应该使用https://github.com/markfguerra/GLWallpaperService作为你的GL /壁纸后端。另外,你不应该在onDraw中设置你的投影(每一帧都会发生),你应该在onSurfaceChanged()中做这件事(因为你只需要在你的视图改变时做),这可能是造成你看到的滞后。检查出this tutorial series让你的脚湿。