Pergunta

Criei um aplicativo de mapa que usa uma imagem muito grande como meu mapa. Ele mostra ladrilhos de alta resolução quando o usuário diminui o zoom em um certo grau e um bitmap de menor resolução de toda a imagem quando passou pelo zoom após 50%. Funciona ok, no meu dróide original, às vezes posso ver um pequeno atraso devido aos novos ladrilhos serem atraídos para e do coletor de lixo.

Agora estou pensando em como o OpenGL ES seria uma maneira melhor de renderizar. Eu nunca o toquei antes, mas pelo que estou lendo em diferentes turistas, parece que eu poderia criar um quad com 8 rostos ou mais e ativar o abate, para que ele desenhe apenas as imagens que estão atualmente visíveis na tela.

Isso eliminaria completamente o atraso? No meu aplicativo de teste, agora tenho ladrilhos sendo carregados na inicialização do aplicativo, mas posso dizer que o atraso se deve a dessas peças que são desenhadas pela primeira vez. Obrigado.

Foi útil?

Solução

Eu escrevi uma visualização de mapa baseada em OpenGL e é incrível, se eu disser isso mesmo. Infelizmente, é para um projeto comercial, por isso não posso oferecer código. No entanto, posso dizer que ele possui 1 thread de renderização, um pool de 8 tópicos de download de ladrilhos e (mais pertinente à sua pergunta) 1 Tópico de armazenamento que carrega e salva telhas no flash NAND ou no cartão SD. A renderização é feita um ladrilho de cada vez, sendo cada azulendo 2 triângulos (não há quads no es). Ainda é de biumento rápido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top