Запустить Android OpenGL в фоновом режиме в качестве ресурса рендеринга для приложения? - PullRequest
12 голосов
/ 29 июня 2011

Я хочу запустить поверхность Android OpenGL-ES в фоновом режиме моего приложения, чтобы предоставить динамические графические ресурсы (растровые изображения и т. Д.) Для приложения. OpenGl GLSurfaceView не является видимым экраном моего приложения; он используется только как фабрика рендеринга для производства графики для основной деятельности.

Кто-нибудь знает, как заставить Android GLSurfaceView работать, когда он не активен? В документации Google Android ясно, что когда GLSurfaceView теряет свой статус основного вида, поверхность разрушается вместе со всеми его ресурсами.

Есть ли способ сохранить GLSurfaceView и связанный с ним GLSurfaceView.Renderer нормально работающим, если он не является (и никогда не работает) основным представлением приложения?

Ответы [ 2 ]

7 голосов
/ 15 июля 2011

Для того, что вы пытаетесь сделать, вы должны полностью пропустить GLSurfaceView.Так как вы просто хотите сделать какую-то закадровую визуализацию OpenGL, вы можете использовать пиксельный буфер EGL и преобразовать его в растровое изображение.Смотрите эту ветку на anddev для решения.Я очень успешно использовал его в некоторых своих приложениях.

Реализация в нижней части этого потока немного ошибочна, поскольку она делает очень простой выбор EGL.Я бы порекомендовал реализовать более надежный селектор, который вы можете найти в GLWallpaperService Роберта Грина, если хотите.

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

Удачи!

1 голос
/ 29 июня 2011

Я настоятельно рекомендую вам не пытаться делать это.Многие текущие драйверы на устройствах Android не поддерживают несколько активных контекстов GL в разных процессах;если драйвер это поддерживает, эта функция не была реализована, потому что сам Android этого не делает, поэтому могут возникнуть неприятные ошибки.

Множественный контекст GL используется только при запуске платформыс Android 3.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...