OpenGLES предзагрузка текстур в другом потоке - PullRequest
3 голосов
/ 01 июля 2011

Мне нужно предварительно загрузить некоторые текстуры в неосновную ветку приложения OpenGLES. Я прочитал это: Не могу вызвать glGenTextures в многопоточном приложении для Android , но это больше Java-версия того, что мне нужно. Как мне указать загрузочной теме загрузить / создать текстуру в основной цикл? Я читаю кое-что о создании контекста и как-то делюсь с основным контекстом. Как?

1 Ответ

3 голосов
/ 01 июля 2011

Есть два шага, чтобы получить текстуры из ресурсов / диска для рендеринга в GL, и они могут быть разделены, чтобы позволить большую часть загрузки и вычислительной работы в рабочем потоке.

Первым шагом является фактическое создание растрового изображения на уровне Java, в котором будет использоваться что-то вроде BitmapFactory.decodeResouce (). Эта часть может быть выполнена в любом потоке, который вам нравится, и когда вы закончите загрузку, вы выбрасываете это растровое изображение в ArrayList или очередь или что-то еще. Убедитесь, что доступ к списку окружен синхронизированным блоком.

Второй шаг - вызвать glGenTextures, что необходимо сделать в потоке GL. Поэтому в начале вашего метода drawFrame () проверьте размер ArrayList, в который вы сохраняете растровые изображения, и, если размер больше 0, сделайте несколько вызовов glGenTexures и удалите и перецилизируйте растровые изображения из массива.

...