Советы по повышению скорости заполнения OpenGL ES на Android

На своих живых обоях я рисую 3 текстурированных четверки, которые покрывают весь экран. На Nexus One я получаю 40 кадров в секунду. Я ищу способы улучшить производительность.

Квадроциклы накладываются друг на друга, текстуры загружаются из растровых изображений RGB_8888. Текстуры - 1024x1024.

У меня есть

glDisable(GL_DITHER);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
glDisable(GL10.GL_LIGHTING);
glDisable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

вещей, которые я пробовал, и все они давали те же 40 кадров в секунду: то при рисовании только одного слоя частота кадров увеличивается до 55. Я полагаю, что меня ограничивает скорость заполнения, так как отключение и включение потенциально дорогостоящих функций приводит к тому же fps, и единственное, что, кажется, улучшает fps, - это просто рисовать меньше ...

Я обдумываю идею сжатия текстур, но поддержка различных форматов сжатия не кажется забавной. ETC1 не имеет альфа-канала, который мне нужен, и я не уверен, можно ли использовать PVRTC и ATITC из Java и OpenGL ES 1.0 или 1.1.

Я был бы рад услышать идеи о том, что еще попробовать. Могу дать указатель на текущую версию обоев и скриншотов, если они нужны.

8
задан Pēteris Caune 2 March 2011 в 09:19
поделиться