Я работаю над 2D-прокруткой для iPhone. У меня большой фон изображения, скажем, 480 × 6000 пикселей, из которого видна только часть (ровно один экран, 480 × 320 пикселей). Как лучше всего получить такой фон на экране?
В настоящее время у меня есть фон, разбитый на несколько текстур (чтобы обойти ограничение максимального размера текстуры), и рисую весь фон в каждом кадре в виде текстурированной треугольной полосы. Прокрутка осуществляется путем перевода матрицы вида модели. Поле ножниц установлено в размере окна 480 × 320 пикселей. Это не должно быть быстрым, я просто хотел рабочий код, прежде чем приступить к оптимизации.
Я подумал, что, возможно, реализация OpenGL будет достаточно умной, чтобы отбросить невидимую часть фона, но, согласно написанному мною коду измерения, похоже, что для прорисовки фона в среднем требуется 7 мс, а максимум - 84 мс. (Это измеряется в симуляторе.) Это примерно половина всего цикла рендеринга, т.е. довольно медленно для меня.
Рисование фона должно быть таким же простым, как копирование 480 × 320 пикселей из одной части VRAM в другую или, другими словами, быстрое копирование. Как лучше всего приблизиться к такой производительности?