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