Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
#1

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

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

Здравствуйте!
Никак не могу разобраться, как на Android в OpenGL ES 2.0 динамически сменить отрисовываемые сцены.
То есть, у меня в некоторый момент времени рисуется одна сцена, мне необходимо, продолжая отрисовывать первую сцену, скомпилировать шейдеры и загрузить текстуры для второй, и только затем их переключить. Это как-то возможно сделать? GLSurfaceView.queueEvent, как я понял, не имеет или не всегда имеет доступ к GLES20 контексту?
Буду очень признателен за помощь, уже все перерыл, ничего толкового по данной теме.

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

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2015, 06:57
Ответы с готовыми решениями:

OpenGL обновление сцены
Столкнулся со следующей проблемой: при попытке нарисовать что-либо на OpenGL...

Асинхронная подгрузка скриптов в wordpress
В гугле требуется добавить асинхронную подгрузку всех скриптов в шапке. Нужно к...

Асинхронная подгрузка данных при скролле страницы
всем привет. может кто то делал такую вещь? Асинхронная подгрузка данных при...

Создание сцены в OpenGL
Помогите создать сцену в OpenGL, только начал изучать вижуал си и OpenGL и...

Сохранение сцены OpenGL в bmp
Доброго времени суток. Передо мной стоит такая задача: Имеется некоторая...

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

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

Асинхронная загрузка
Здравия! имеется index.php страница такого вида <form id="form1"...

Асинхронная задержка
Доброго дня, товарищи, я полнейший newbee, такой вопрос, допустим, на...

Асинхронная функция
Всем добый день. В nodejs совсем недавно. Опыт работы только в .net Перечитал...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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