Как стать автором
Обновить

Комментарии 29

НЛО прилетело и опубликовало эту надпись здесь
Есть давний пример от Гугла, берите и меняйте под себя: code.google.com/p/gdc2011-android-opengl/
Это Вам тоже пригодится: github.com/markfguerra/GLWallpaperService — здесь есть готовый пример рабочих обоев.
Это тот случай, когда по туториалу дольше получится, чем использовать готовое решение.
Отлично! Спасибо! Переходите к мобильной 3D визуализации товаров.
Я конечно понимаю, что это делалось под экраны с повышенной плотностью пикселей, но не хотите сделать какой-нибудь антиалиасинг? Например, простой в вычислительном плане FXAA.
Для девайсов на NVidia Tegra мы используем ихний «Coverage Sampling Antialiasing», который работает без потери производительности (проверено). Для него выбираем конфиг с такими значениями:
    EGL_COVERAGE_BUFFERS_NV, 1,
    EGL_COVERAGE_SAMPLES_NV, 2,

Для других девайсов выбирать обычный АА — опасненько, производительность может упасть, и очень сильно. Даже без всяких АА приходиться биться за каждый FPS :)
Это он для PC видеокарт простой. А для мобильных чипов — оверкилл.
На PowerVR MSAA будет быстрее
Я так понимаю с такими обоями батарейки хватает на час?
А вообще круто, хоть и без анти-алиасинга, как заметили выше.
Я вижу вас уже минусуют :)
Это типичное заблуждение, любые живые обои имеют массу комментариев на Гугл Плее про то что они красивые, но садят батарейку. На самом деле, батарейку они садят, да, но только когда ты на них смотришь, т.е. находишься на хоум-скрине. Пользователи очень мало времени проводят просто глядя на хоум-скрин. А как только пользователь ушел с хоум-скрина — процесс обоев прекращает существование.
На собственных телефонах — никаких изменений в расходе батарейки, у всех знакомых которым давали потестировать — тоже.
Если он так мало смотрит на хому скрин, нафига ему там кино?
Потому, что хочется. Для красоты. Для удовлетворения чувства прекрасного. У вас в квартире, наверняка, красивые обои на стенах поклеены или штукатурка интересная или плитка. А ведь можно было просто белой краской покрасить :)

Я, например, рабочий стол своего компа вижу, от силы, минуты три за весь рабочий день, но это не мешает мне периодически вешать на него свежие нескучные обои.
Обои-то дома я постоянно вижу. И, кстати, в последнее время тенденция к чисто белым, максимум пастельного цвета, стенам. На рабочем компьютере, который работает от сети, да, возможно и есть смысл. А вот когда осталось 1% батареи, а мне смарт из последних сил отрисовывает анимированный рабочий стол, а потом на звонок не хватает… Лучше я выключу такой рабочий стол. Чувство прекрасного не сравнить с чувством раздражения ;(
Вот Вам бесплатная фича — сделайте чтоб этот Ваш декстоп проверял заряд аккумулятора и при определенном пороге заменял себя на статику. Люди Вам спасибо скажут.
Вот кстати поддержу, такая опция многим придётся по нраву.
А точно известно, что процесс с обоями завершается, когда переходишь с хоум-скрина, например, в список приложений телефона? Объясню ситуацию: Android 2.3, «живые обои» с плавающим пузырьком, который лопается (со звуком!), его в него ткнуть. Перехожу с хоум-скрина в общий список приложений, выбираю нужное мне и вдруг слышу опять тот же характерный звук с -вроде-как-отключенных- обоев.
А вы использовали какую-то стороннюю либу для того, чтобы подружить GLSurfaceView и WallpaperService? Или сами писали требуемый код? Я так понимаю, что заставить их работать вместе — отдельная задача.
Спасибо, как раз к ней присматриваюсь… Я правильно понимаю, что она поддерживает OpenGL 2.0 и шейдеры с ходу, без танцев с бубном?
Это просто обертка для запуска Renderer (любого, хоть 1.0 хоть 2.0 — как проинициализируете). Работа с шейдерами — это дело вашего кода, а не этого.
Ага, понятно! Буду разбираться, спасибо!
Автор, Вам вопрос: неужели живые обои пользуются такой популярностью среди обычных пользователей?
Просто вспоминая про серьёзное потребление батареи вопрос напрашивается сам собой.
>серьёзное потребление батареи
Да, ладно ка =)
среди кого? обычная пользователь никак не связывает потребление батареи и свистелку на рабочем столе. А свистелки они любят какой-то необъяснимой любовью
Просто не могу не похвалить.
Статья супер, молодцы, так держать!!!
Красиво. Lantern Festival понравился, но какие-то глюки на Nexus 10. Такое ощущение что не хватает глубины zbuffer. Треугольники моргают на горах и отражениях светильников.
А почему glDrawArrays? Не пробовали с индексами (glDrawElements)? По идее, должно быть более эффективно.
Используем оба метода — VBO для статических объектов, а glDrawArrays — для анимированных. Разницы в производительности не заметно. См. stackoverflow.com/questions/13060299/opengl-es-2-0-vbo-performances-in-a-shared-memory-architecture
Вы меня неправильно поняли.

Суть glDrawElements в том, что используется ещё один буфер. Последний аргумент glDrawElements есть либо указатель на него в «клиентской памяти», либо offset в текущем привязанном GL_ELEMENT_ARRAY_BUFFER (аналогичные вещи происходят в glVertexAttribPointer, только там GL_ARRAY_BUFFER).

В этом буфере хранятся индексы.

Например, если в массиве атрибутов хранятся числа: 0.0 1.0 2.0 3.0
А в element array — 0 1 2 2 3 0
То в результате glDrawElements(GL_TRIANGLES, GL_UNSIGNED_SHORT, 6, NULL) на соответствующий вход шейдера придут числа
0.0 1.0 2.0 2.0 3.0 0.0.

Более близкий пример — тот самый формат .obj. Только там тройные независимые индексы (вершина/нормаль/uv), OpenGL же такого не позволяет.

В каком-то смысле это обобщенный triangle strip/triangle fan/что там ещё есть не знаю даже. Вершины нередко дублируются в разных треугольниках, так что память экономится прилично. Да и последние вершины в кеш наверняка попадают, так что и прозводительность должно положительно влиять.
Разницы в производительности не заметно.

Так тем более надо использовать VBO. Ничего не теряете, а когда память будет выделенная, станет только лучше.
А финансовые результаты есть?

Мы (я программист и моя девушка дизайнер) просто сделали обои под НГ для Android заработали около 600$ за месяц не вкладывая ни копейки в продвижение. Но поняли, что программировать рисовать и продвигать(если серьезно) вдвоем очень сложно. Поэтому решили найти программистов, но что-то на фрилансе очень сложно найти толковых OpenGL спецов, которые учтут все нюансы мобильной разработки. Отсюда у меня к вам предложение, объединить силы, если интересно конечно?
Где то я уже это видел…
image

А, вспомнил. Сделайте такие анимированные обои, куплю:

:D
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории