2010-11-14 37 views
1

Je souhaite pouvoir dessiner des images bitmap consécutives (de type BufferedImage.TYPE_INT_RGB) d'une vidéo aussi rapidement que possible dans Java. Je veux connaître la meilleure méthode pour le faire. Est-ce que quelqu'un a un conseil où je devrais commencer? De ce que j'ai lu, 2 options sont: 1) Utiliser les routines GDI/GDI + dans une DLL JNI fonctionnant avec JAWT (Im sur Windows) 2) Utilisez Java3D et appliquer des textures sur le visage d'une boîte et le faire pivoter à la caméraAccélérer le dessin bitmap dans Java

Im intéressant dans tous les conseils sur ces sujets ainsi que d'autres. J'ai fait une quantité décente de programmation GDI/GDI + en VB quand j'ai créé un contrôle ActiveX, donc l'utilisation de GDI devrait être indolore, mais deviner Java3D utilisera plus le GPU (je peux me tromper) et donner de meilleures performances. Qu'est-ce que tu penses? GDI et JAWT avec mon expérience précédente, ou démarrer et nouveau voyage API avec Java3D. Merci d'avance. :)

+0

J'ai supprimé Java 3D à partir des tags, car il est sans rapport, et a ajouté gpu et java 2D. –

Répondre

4

Pour obtenir une animation fluide (si c'est ce que vous voulez obtenir), vous devez utiliser le double tampon. Pour ce faire, vous devrez créer une nouvelle java.awt.Image (ou une sous-classe comme BufferedImage, ou si vous voulez un traitement accéléré OpenGL, VolatileImage) pour chaque image que vous voulez afficher. Si vous ne l'avez pas déjà fait, appelez Image.getGraphics() pour obtenir un objet java.awt.Graphics (peut également être utile pour ajouter votre contenu à l'image). À la fin, lorsque vous avez masqué Image est terminée, appelez Graphics.draw() pour remplacer l'affichage en cours en douceur. VolatileImage est OpenGL accéléré et beaucoup plus rapide.

Lorsque VolatileImage.getGraphics() est appelé, il renvoie en réalité un Graphics2D, qui fait également partie du pipeline graphique accéléré.

Cela fonctionne sur Windows, Linux et Solaris, mais vous devez installer des pilotes OpenGL pour votre carte graphique.

Quelques références supplémentaires:

pipeline graphique Accelerated:

http://download.oracle.com/javase/1.5.0/docs/guide/2d/new_features.html

http://www.javalobby.org/forums/thread.jspa?threadID=16840&tstart=0

tampon double:

http://www.java2s.com/Code/Java/2D-Graphics-GUI/Smoothmoveusingdoublebuffer.htm

http://www.heatonresearch.com/articles/23/page2.html

http://www.javacooperation.gmxhome.de/BildschirmflackernEng.html

+0

Merci pour votre contribution et vos liens! Je vais regarder dans Volatile Images. – Xiphias3

+0

Les versions récentes de Java sous Windows utilisent maintenant un pipeline DirectX. –