Je travaille sur un jeu de défilement 2D pour iPhone. J'ai un grand fond d'image, disons 480 × 6000 pixels, dont seule une partie est visible (exactement la valeur d'un écran, 480 × 320 pixels). Quelle est la meilleure façon d'obtenir un tel fond sur l'écran?Grand fond de défilement dans OpenGL ES
Actuellement, j'ai l'arrière-plan divisé en plusieurs textures (pour contourner la limite de taille de texture maximale) et dessiner l'arrière-plan entier dans chaque image comme une bande de triangle texturée. Le défilement se fait en traduisant la matrice modelview. La boîte à ciseaux est réglée sur la taille de la fenêtre, 480 × 320 pixels. Ce n'est pas destiné à être rapide, je voulais juste un code de travail avant d'arriver à optimiser. Je pensais que peut-être l'implémentation OpenGL serait assez intelligente pour éliminer la partie invisible de l'arrière-plan, mais selon un code de mesure que j'ai écrit, il faut 7 ms pour dessiner en moyenne et 84 ms au maximum. (Ceci est mesuré dans le simulateur.) Cela représente environ la moitié de la boucle de rendu entière, c.-à-d. assez lent pour moi.
Dessiner l'arrière-plan devrait être aussi facile que de copier quelque 480 × 320 pixels d'une partie de la VRAM à une autre, ou, en d'autres termes, de flamboyer rapidement. Quel est le meilleur moyen de se rapprocher d'une telle performance?
Merci, plus ou moins, je pensais que ce serait comme ça. Aujourd'hui, je vais enfin avoir un iPod pour tester, je vais exécuter le code sur le HW réel et voir ce qui se passe. – zoul
Après avoir essayé le code sur l'appareil: Oui, les synchronisations effectuées sur le simulateur ne valent rien. – zoul