2010-11-20 21 views
3

J'ai créé une application cartographique qui utilise une très grande image comme ma carte. Il affiche des mosaïques haute résolution lorsque l'utilisateur effectue un zoom avant jusqu'à un certain degré et une image bitmap basse résolution de l'ensemble de l'image lorsqu'elle est agrandie au-delà de 50%. Cela fonctionne bien, sur mon droid d'origine parfois je peux voir un très léger décalage dû aux nouvelles tuiles étant attirées dans et de la garbage collector. Je pense maintenant à la façon dont OpenGL ES serait un meilleur moyen de rendre. Je ne l'ai jamais touché auparavant, mais d'après ce que j'ai pu lire dans différents turo, il me semble que je pourrais créer un quad qui a 8 faces ou plus, et permettre l'abattage pour ne dessiner que les images visibles à l'écran.Gestion de grands bitmaps dans OpenGL ES et Android

Est-ce que cela éliminerait complètement le décalage? Dans mon application de test, j'ai maintenant des dalles chargées au démarrage de l'application, mais je peux dire que le retard est dû au fait que ces tuiles ont été dessinées pour la première fois. Merci.

Répondre

4

J'ai écrit une vue de carte basée sur OpenGL et c'est génial si je le dis moi-même. Malheureusement, c'est pour un projet commercial, donc je ne peux pas offrir de code. Je peux cependant vous dire qu'il a 1 thread de rendu, un pool de 8 threads de téléchargement de tuiles, et (le plus pertinent à votre question) 1 thread de stockage qui charge et enregistre des tuiles sur le flash NAND ou sur la carte SD. Le rendu est fait d'une tuile à la fois, chaque tuile étant de 2 triangles (il n'y a pas de quads en ES). C'est toujours très rapide.

+0

génial. Quelle était la taille de la résolution de votre carte? Le mien est assez grand, 6656 par 4880 je crois. – jfisk

+0

Comment voulez-vous dire? Il est de taille mondiale, avec 18 niveaux de zoom ... de l'ordre de 1 To de données. –

+0

Chaque mosaïque avait 256x256 pixels sur les écrans HDPI, pour MDPI elle était 128x128. Le serveur a permis les deux. –