По оптимизациям:
1. copyPixels, если не ошибаюсь, быстрее draw.
2. Texture.fromBitmapData - по-моему, это синхронная операция, в отличии от загрузки ATF, где можна указать async-callback(догадываюсь, там используется нечто вроде PBO, но не могу понять, почему Adobe не используют его же и для несжатых данных). Но в галерее устройства фотки вряд ли хранятся в ATF, так что этот вариант отпадает

.
Была одна идея - ATF вроде как может быть контейнером для обычного RGBA:
Цитата:
|
Well, you may want to use uncompressed textures but still want to leverage cubemap, automatic mipmap support or even texture streaming.
|
И вот можно бы попробовать создавать во время работы ATF-контейнер с нашей BitmapData прямо в AS, и загружать его в видеопамять асинхронно. Но тут будет порядочный перерасход памяти на дублирование данных в ATF(хоть и временный), да и непонятно, быстрее ли это будет

P.S.
Проверил:

Код AS3:
public function Encode(AQuantization:int = 100):void
{
var vEncoder:JPEGXREncoderOptions = new JPEGXREncoderOptions(AQuantization);
var vBytes:ByteArray = new ByteArray();
var vStart:uint = getTimer();
FTest.bitmapData.encode(FTest.bitmapData.rect, vEncoder, vBytes);
Cc.logch(this, 'Complete in ' + uint(getTimer() - vStart) + ' ms');
}
На PC с i3 это занимает около 450-500 мс для текстуры 4302x1080(первое, что под руку подвернулось), с минимальным уровнем сжатия, так что для мобильных не вариант(да и на РС не особо чем-то поможет, разве что для каких-то редакторов уровней можно конвертор приделать).