Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 596
#1

OpenGL ES 2.0: Асинхронная подгрузка сцены - Android

27.09.2015, 06:57. Просмотров 231. Ответов 8
Метки нет (Все метки)

Здравствуйте!
Никак не могу разобраться, как на Android в OpenGL ES 2.0 динамически сменить отрисовываемые сцены.
То есть, у меня в некоторый момент времени рисуется одна сцена, мне необходимо, продолжая отрисовывать первую сцену, скомпилировать шейдеры и загрузить текстуры для второй, и только затем их переключить. Это как-то возможно сделать? GLSurfaceView.queueEvent, как я понял, не имеет или не всегда имеет доступ к GLES20 контексту?
Буду очень признателен за помощь, уже все перерыл, ничего толкового по данной теме.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2015, 06:57     OpenGL ES 2.0: Асинхронная подгрузка сцены
Посмотрите здесь:

OpenGL ES AndroidNDK Android
OpenGL ES Android
Подгрузка разной разметки Android
Android OpenGL
Android Инициализация OpenGL ES
Android Подгрузка данных при достижении конца списка
OpenGl ES 2.0 Текстуры Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dvnisawesome
26 / 26 / 2
Регистрация: 03.04.2015
Сообщений: 105
Завершенные тесты: 1
28.09.2015, 19:03     OpenGL ES 2.0: Асинхронная подгрузка сцены #2
Тут главное помнить, что работу с GL нельзя распаралелить (т.е. вызывать gl* функции из разных потоков), не знаю, что делает queueEvent, но думаю, что он тут не поможет. Нужен отдельный класс loader, который будет управлять загрузкой ресурсов в GPU, и чтоб он умел эту загрузку размазывать по кадрам. Например, кадр 1 - загрузили текстуру, кадр 2 - сгенерили для неё mipmaps, и т.д. Так же нужен флаг ready у каждого ресурса, чтоб не заюзать его случайно, пока он не загружен. Гугли на тему стриминга ресурсов, через классы андроида это никак не сделать. Через какой нибудь AsyncTask можно загрузить данные в память, считать код шейдера или вершины мешей, но в GPU грузить только в основном потоке.
akyma40
16 / 15 / 3
Регистрация: 20.05.2015
Сообщений: 103
28.09.2015, 19:48     OpenGL ES 2.0: Асинхронная подгрузка сцены #3
то чувство когда не понимаешь как вообще работать с opengl(((
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 596
28.09.2015, 21:09  [ТС]     OpenGL ES 2.0: Асинхронная подгрузка сцены #4
Цитата Сообщение от dvnisawesome Посмотреть сообщение
Тут главное помнить, что работу с GL нельзя распаралелить (т.е. вызывать gl* функции из разных потоков), не знаю, что делает queueEvent, но думаю, что он тут не поможет. Нужен отдельный класс loader, который будет управлять загрузкой ресурсов в GPU, и чтоб он умел эту загрузку размазывать по кадрам. Например, кадр 1 - загрузили текстуру, кадр 2 - сгенерили для неё mipmaps, и т.д. Так же нужен флаг ready у каждого ресурса, чтоб не заюзать его случайно, пока он не загружен. Гугли на тему стриминга ресурсов, через классы андроида это никак не сделать. Через какой нибудь AsyncTask можно загрузить данные в память, считать код шейдера или вершины мешей, но в GPU грузить только в основном потоке.
Спасибо, уже нашел как: через управление контекстами

Добавлено через 1 минуту
Цитата Сообщение от akyma40 Посмотреть сообщение
то чувство когда не понимаешь как вообще работать с opengl(((
Да, в библиотеку не сразу въехал) Да, и сейчас не особо разбираюсь
dvnisawesome
26 / 26 / 2
Регистрация: 03.04.2015
Сообщений: 105
Завершенные тесты: 1
28.09.2015, 21:11     OpenGL ES 2.0: Асинхронная подгрузка сцены #5
Цитата Сообщение от contedevel Посмотреть сообщение
через управление контекстами
Я бы не рекомендовал это делать, но можешь попробовать. Если андроид вообще умеет несколько контекстов на одно приложение.
akyma40
16 / 15 / 3
Регистрация: 20.05.2015
Сообщений: 103
28.09.2015, 21:11     OpenGL ES 2.0: Асинхронная подгрузка сцены #6
contedevel, да я не понимаю как работать вообще с ней, нарисовал модели, а как их впехнуть не знаю
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 596
29.09.2015, 10:11  [ТС]     OpenGL ES 2.0: Асинхронная подгрузка сцены #7
Цитата Сообщение от akyma40 Посмотреть сообщение
да я не понимаю как работать вообще с ней, нарисовал модели, а как их впехнуть не знаю
Нужен загрузчик модели, который ее преобразует в понятный OpenGL ES формат, в нете есть статьи по этой теме.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
29.09.2015, 11:17     OpenGL ES 2.0: Асинхронная подгрузка сцены #8
contedevel, про какой формат вы пишете?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2015, 12:37     OpenGL ES 2.0: Асинхронная подгрузка сцены
Еще ссылки по теме:

Быстрая подгрузка картинок Android
Android Комбинирование 2D и 3D в OpenGL ES 2.0
Подгрузка еще информации из базы MYSQL Android
Медленная подгрузка UI Android
Android Асинхронная загрузка элементов в listview

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 596
29.09.2015, 12:37  [ТС]     OpenGL ES 2.0: Асинхронная подгрузка сцены #9
Цитата Сообщение от Valakin Посмотреть сообщение
про какой формат вы пишете?
Преобразовать данные в файле о вершинах в формат понятный OpenGL ES. Для простых моделей, где не требуется анимация или еще что либо подобное, это легко сделать. В свое время писал загрузчик модели на С.
Yandex
Объявления
29.09.2015, 12:37     OpenGL ES 2.0: Асинхронная подгрузка сцены
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru