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

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

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

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

27.09.2015, 06:57. Просмотров 252. Ответов 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: Асинхронная подгрузка сцены
Посмотрите здесь:

Асинхронная загрузка элементов в listview - Программирование Android
Столкнулся с такой проблемой, что у меня есть listview, в который с сайта подгружается список из более чем ста позиций. Хотел бы сделать...

Медленная подгрузка UI - Программирование Android
Добрый день! Есть такой кейс. Две активити. Из одной можно запустить другую. В обеих есть свой TabLayout. Так вот, как исправить такой...

Быстрая подгрузка картинок - Программирование Android
Здравствуйте, написал маленькую прожку, грубо говоря что при нажатии на кнопку меняется картинка ( фон ), но т.к. картинка весит 0.6мб то...

Подгрузка разной разметки - Программирование Android
Как можно подгружать разную разметку (layout) при определённых условиях? т.е иногда использовать не (R.layout.fragment_screen), а например...

Подгрузка частей изображения - Программирование Android
по какому принципу работает гугл карты? есть изображение, а при увеличении оно загружает то место на которое мы смотрим и увеличивает...

Подгрузка еще информации из базы MYSQL - Программирование Android
Добрый день Вот у меня сейчас выводится полный список категорий. Вот как сделать чтобы к примеру первый вывод был 10 разделов...

Подгрузка данных при достижении конца списка - Программирование 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: Асинхронная подгрузка сцены
Еще ссылки по теме:

OpenGL - Программирование Android
Наверное, наитупейший вопрос, но как работать с картинкой в OpenGL? Как инициализировать? В примере на офсайте и во многих остальных...

OpenGL ES - Программирование Android
Пытаюсь разобраться с 3D-графикой в Android, нашел пару уроков по OpenGL ES, начал экспериментировать. Никак не могу найти методы...

Инициализация OpenGL ES - Программирование Android
Вечер добрый, товарищи. Пытаюсь инициализировать область GLSurfaceView в части экрана. Как-то не очень выходит. Подскажите? Код: ...

OpenGL ES AndroidNDK - Программирование Android
ок, таки настроил среду разработки и разобрался как компилировать проекты с использованием NDK. Поведайте пожалуйста, где можно найти...

Android OpenGL 1.1 - Программирование Android
Пытаюсь вот так нарисовать треугольник,но ничего не получается.В чём дело.смотрел несколько примеров,вроде всё идентично. package...


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

Или воспользуйтесь поиском по форуму:
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