Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Gerbasha
6 / 6 / 2
Регистрация: 04.10.2011
Сообщений: 115
#1

VBO и фоновая загрузка моделей - Программирование Android

30.03.2014, 18:35. Просмотров 668. Ответов 1
Метки нет (Все метки)

Добрый день. Изучаю OpenGl ES на Android. Пытаюсь реализовать загрузку моделей в фонов потоке, чтобы отобразить прогресс бар. Когда загружа модель в основном потоке все нормально, но фонов режиме экран пустой.
Фоновый процесс реализовал так :
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class AsyncTaskLoader extends AsyncTask<Void, Integer, Boolean> {
…
    @Override
    protected Boolean doInBackground(Void... voids) {
       for (IAsyncCallback cal : callbacks) {
          cal.workToDo();
       }
       return null;
    }
    @Override
    protected void onPostExecute(Boolean aBoolean) {
       for (IAsyncCallback cal : callbacks) {
          cal.onComplete();
 
       }
       isFistLoaded=false;
       isDopLoaded=false;
       super.onPostExecute(aBoolean);
    }
Модели отобржаю через VBO :
class VertexBufferedObject {

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    static void bufferData(int target, Buffer buf, int size, int bufferId) {
       GLES20.glBindBuffer(target, bufferId);
       GLES20.glBufferData(target, size, buf, GLES20.GL_STATIC_DRAW);
       GLES20.glBindBuffer(target, 0);
    }
    protected void genBuffer() {
       Log.d(TAG, "genBuffer");
       // Second, copy these buffers into OpenGL's memory. After, we don't need to keep the client-side buffers around.
       int bufferSize = textures.size() + 1;
       final int buffers[] = new int[bufferSize];
       GLES20.glGenBuffers(bufferSize, buffers, 0);
       mVertexBufferIdx = buffers[0];
       indexBufferId = new int[2][textures.size()];
       System.arraycopy(buffers, 1, indexBufferId[0], 0, buffers.length - 1);
 
       Log.d(TAG, "buffers ");
       for (int i = 0; i < buffers.length; i++)
          Log.d(TAG, " " + buffers[i]);
 
        bufferedVertex(vertexBuffer, mVertexBufferIdx);
       for (int i = 0; i < indexBufferId[0].length; i++) {
          bufferedIndex(indexTextureMap.get(textures.get(i)), indexBufferId[0][i]);
          indexBufferId[1][i] = indexTextureMap.get(textures.get(i)).capacity();
//        Log.d(TAG, "buffers "+indexBufferId[0][i] +" "+indexBufferId[1][i]);
       }
       indexTextureMap.clear();
       indexTextureMap = null;
       vertexBuffer.limit(0);
       vertexBuffer = null;
    }
    public void compilte() {
       genBuffer();
       loaderComplite = true;
    }
Парсер работает так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
   @Override
    public void workToDo() {
       parse();
    }
 
    @Override
    public void onComplete() {
       Log.d(FileIO.TAG, "onComplete");
       for (String key : keyList) {
          modelList.get(key).compilte();
 
       }loaderComplite = true;
    }
В дебаге прохожу в обомих режимах данные загружаются, и каждая функция проходит без ошибок. Может кто-нибудь подскажет хотя-бы в какую сторону смотреть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2014, 18:35
Я подобрал для вас темы с готовыми решениями и ответами на вопрос VBO и фоновая загрузка моделей (Программирование Android):

Фоновая музыка
Как мне сделать, чтобы у меня проигрывалась музыка на фоне, она не...

Фоновая музыка в приложении
Добрый день. Я новичок и недавно нашел статью о том, как разработать первую...

Фоновая музыка в сплэш активити
Объясните пожалуйста,как сделать,чтобы помимо отображения картинки,звучала так...

Редактор 3D-моделей
Какой программой, желательно бесплатной можно пользоваться для создание моделей...

Opengl es: вывод 3D моделей
Всем привет!!!! Пытаюсь разобраться как на экран выводить 3D модели, но почему...

Opengl es: загрузчик 3D моделей
Всем привет! пытаюсь использовать 3D модели формата (.obj) в приложении, как я...

1
snake32
1641 / 1095 / 191
Регистрация: 26.02.2009
Сообщений: 4,060
Записей в блоге: 5
31.03.2014, 01:24 #2
Каждый поток должен иметь свой OpenGL контекст. Которые можно шарить между собой
http://www.gamedev.ru/community/ogl/articles/multithreading
Наверное в ES есть что-то такое же
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2014, 01:24
Привет! Вот еще темы с решениями:

различие в GPS для различных моделей телефонов
Добрый вечер. Возможно не совсем корректно назвал тему, тем не менее. Есть...

Фоновая загрузка изображений
Всем доброго ) У меня вот такая проблема. Уже сделал простую галерею изобр. ...

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

Фоновая загрузка данных
Добрый день. Пишу небольшое оконное приложение. И так получается, что для...


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

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

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