Gran fondo de desplazamiento en OpenGL ES

Estoy trabajando en un juego de desplazamiento 2D para iPhone. Tengo un fondo de imagen grande, digamos 480 × 6000 píxeles, de solo una parte visible (exactamente el valor de una pantalla, 480 × 320 píxeles). ¿Cuál es la mejor manera de obtener ese fondo en la pantalla?

Actualmente tengo el fondo dividido en varias texturas (para superar el límite máximo de tamaño de textura) y dibujar todo el fondo en cada cuadro como una tira triangular texturizada. El desplazamiento se realiza traduciendo la matriz de vista de modelo. El cuadro de tijera se establece en el tamaño de la ventana, 480 × 320 píxeles. Esto no pretende ser rápido, solo quería un código de trabajo antes de comenzar a optimizar.

Pensé que tal vez la implementación de OpenGL sería lo suficientemente inteligente como para descartar la parte invisible del fondo, pero de acuerdo con un código de medición que escribí, parece que el fondo tarda 7 ms en dibujarse en promedio y 84 ms como máximo. (Esto se mide en el simulador). Esto es aproximadamente la mitad de todo el ciclo de renderizado, es decir. bastante lento para mi

Dibujar el fondo debería ser tan fácil como copiar unos 480 × 320 píxeles de una parte de la VRAM a otra, o, en otras palabras, increíblemente rápido. ¿Cuál es la mejor manera de acercarse a ese rendimiento?

Respuestas a la pregunta(2)

Su respuesta a la pregunta