Этот вопрос граничит с субъективным, но не совсем: я надеюсь услышать об опыте других с этим (или должны быть возможны и аргументированные ответы).
Я пишу приложение для Android OpenGL ES 1.1. Он использует NDK: ядро рендеринга OpenGL написано в нативном коде, очень похоже на пример OpenGL san-angeles , который поставляется с NDK. Я использую текстуры OpenGL, которые считываются в приложение как JPG. Я знаю, как это сделать, но мне интересно, это самое эффективное место для этого (под эффективным я подразумеваю быстрое выполнение).
Чтобы проиллюстрировать, вот несколько сценариев для привязки текстур OpenGL на основе входных JPG в моем проекте:
1) Код Java создает растровое изображение из JPG (т.е. распаковывает его), а также связывает и загружает текстуру, используя привязки Java OpenGL. Идентификаторы текстуры передаются через NDK в собственный код, чтобы нативный код мог использовать их для наложения текстуры.
2) Код Java создает растровое изображение из JPG (то есть распаковывает его) и передает необработанные данные изображения через NDK в собственный код, который затем связывает и загружает текстуру из этих необработанных данных изображения.
3) Код Java проходит через данные JPG (сжатые) через NDK в собственный код, который распаковывает растровое изображение, а затем связывает и загружает текстуру.
Я использую NDK и собственный код не по соображениям скорости, а по соображениям переносимости - я хочу, чтобы мой основной код OpenGL работал на iPhone и Android, так же, как в примере san-angeles OpenGL это идет с NDK. Я знаю, что native не всегда быстрее, чем код Java.