2010-05-05 10 views
0

J'ai une application Android qui affiche des cadres VGA (640x480) en utilisant OpenGL ES. L'application lit chaque image à partir d'un fichier vidéo et met à jour la texture en conséquence.Pourquoi le mappage de texture OpenGL ES est très lent?

Mon problème est que ça prend presque 30 ms. dessiner chaque image en utilisant OpenGL. Un test similaire utilisant le Canvas/drawBitmap était d'environ 6 ms sur le même périphérique.

Je suis les mêmes appels OpenGL que VLC Media Player utilise, donc je suppose que ceux-ci sont optimisés dans ce but.

Je voulais juste entendre vos pensées et vos idées à ce sujet?

+1

Avez-vous une idée de la rupture de temps entre la texture image-> et le rendu de la texture au polygone? Je soupçonne qu'une grande partie du coût est la décompression vidéo. Si vous dessinez le même cadre encore et encore, cela change-t-il le temps passé? –

Répondre

0

Quels sont les appels que vous utilisez? assurez-vous que vous créez une seule texture (glTexImage2D) et la prochaine fois juste la mettre à jour avec un nouveau tampon.Vous pouvez également désactiver d'autres choses telles que depthbuffer, stencil, accumulation, éclairage, etc Si aucun de ces aide, vérifiez vous l'implémentation opengl. assurez-vous que le matériel qui utilise (gpu)

0

Etes-vous sûr que le bitmap sont chargés avec RBG_565 Essayez ceci:

BitmapFactory.Options opt = new BitmapFactory.Options(); 
opt.inPreferredConfig = Bitmap.Config.RGB_565; 
bm = BitmapFactory.decodeByteArray(temp, 0, temp.length,opt); 

Laissez-moi savoir!