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

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

30.03.2014, 18:35. Просмотров 716. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2014, 18:35
Ответы с готовыми решениями:

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

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

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

WinForms приложение и фоновая загрузка файлов через WCF
У меня есть отдельный контракт для загрузки файлов. Клиент я создаю, когда пользователь заходит...

Загрузка моделей.
Всем привет, дорогие друзья. подскажите пожалуйста, что использовать и как загрузить 3D модель в...

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

Загрузка obj моделей
Здравствуйте. не подскажите простых библиотек для загрузки obj моделей (использую C#, а sharpGl что...

Загрузка нескольких 3d моделей
Подскажите, что нужно чтобы можно было загрузить две и более (.3ds)модели в OpenGL. Например я...

Загрузка двух моделей
Загружаю модель таким способом. Как загрузить ещё одну модель, так что-бы потом можно было...


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

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

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