Оптимизация живых обоев

Я обнаружил, что всякий раз, когда я создаю живые обои, все начинает отставать. Например, при переключении между экранами лагает анимация. Во многих других обоях, которые я видел, с гораздо более требовательной графикой, задержки буквально нет. Судя по тому, что я вижу, 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
}

Но после этого я понятия не имею, как рисовать растровые изображения или линии, которые, по сути, все, что мне нужно для моего текущего проекта. Может кто-нибудь, пожалуйста, скажите мне, как сделать эти простые задачи? Кроме того, если я полностью выключен, может ли кто-нибудь сказать мне, что я делаю неправильно?


person GuyWhoNeedsHelp    schedule 16.06.2011    source источник


Ответы (2)


Вам необходимо использовать дополнительный пакет для работы с OpenGL в живых обоях. Два очевидных кандидата:

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

person George Freeman    schedule 16.06.2011
comment
Спасибо! Думаю, я выберу GLWallpaperService. - person GuyWhoNeedsHelp; 16.06.2011

Джордж прав, если вы еще этого не сделали, вам обязательно следует использовать https://github.com/markfguerra/GLWallpaperService для серверной части GL/обоев.

Кроме того, вам не следует настраивать свои проекции в onDraw (что происходит каждый кадр), вы должны делать это в onSurfaceChanged() (поскольку вам нужно делать это только при изменении вашего вида), что может вызывать задержку, которую вы повторно вижу. Ознакомьтесь с этой серией руководств чтобы ноги замочить.

person Josh    schedule 16.06.2011