IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Graphisme Java Discussion :

BufferedImage et accélération graphique


Sujet :

Graphisme Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Par défaut BufferedImage et accélération graphique
    Salut!

    Bon je précise, je débute en Java. Ma question est peut-être simple mais je préfère être sûr de ce genre de détails.

    Bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    // ...
     
    URL url = null;
    BufferedImage bufImage = null;
    try {
        url = CetteClasse.class.getResource("/image.png");
        bufImage = ImageIO.read(url);
    } catch(IOException ioe)    {
        System.out.println("Erreur de chargement! " + ioe);
    } catch(Exception e)    {   System.out.println(e);  }
     
    GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
    BufferedImage image = gc.createCompatibleImage(bufImage.getWidth(), bufImage.getHeight(), Transparency.BITMASK);
    image.getGraphics().drawImage(bufImage, 0, 0, null);
     
    AutreClasse c = new AutreClasse(image);
     
    // ...

    "image" est stockée dans AutreClasse(image).
    Ma question est, est-il nécessaire que image soit une BufferedImage pour conserver l'accélération graphique ? Car le constructeur de AutreClasse est AutreClasse(Image img). Certes BufferedImage descend de Image, donc ça marche, mais si je perds l'accélération graphique au passage ça sert à rien...

    Si je remplaçais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BufferedImage image = gc.createCompatibleImage(bufImage.getWidth(), bufImage.getHeight(), Transparency.BITMASK);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image image = gc.createCompatibleImage(bufImage.getWidth(), bufImage.getHeight(), Transparency.BITMASK);
    serait-ce toujours bon ? Je précise que l'affichage n'est pas géré par un paint(Graphics g) mais par un BufferStrategy.


    Désolé si ce n'est pas très clair, je commence à peine à zyeuter les bibliothèques du JDK donc je ne les maîtrise pas très bien. Ce que je veux c'est bénéficier de l'affichage le plus rapide possible avec un bon contrôle sur les images, leur disposition etc. C'est pour un jeu en 2D.


    Autre petite question au passage, pour la transparence des images. Est-il plus efficace de faire une image avec fond vert (vert par exemple) et de ne pas afficher cette couleur pour avoir un effet de transparence, ou bien de faire une image avec des pixels transparents directement ? Les pixels transparents (ARGB) rajoutent 8bits par pixel par rapport aux RGB il me semble... d'où la question.
    Dans le cas où la première possibilité est la meilleure, comment la mettre en place ?


    Merci pour les réponses éventuelles!

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    serait-ce toujours bon ?
    Oui, c'est pas parce que tu mets ton image dans un type de base qu'elle se transforme en ce type de base.


    Autre petite question au passage, pour la transparence des images. Est-il plus efficace de faire une image avec fond vert (vert par exemple) et de ne pas afficher cette couleur pour avoir un effet de transparence, ou bien de faire une image avec des pixels transparents directement ? Les pixels transparents (ARGB) rajoutent 8bits par pixel par rapport aux RGB il me semble... d'où la question.
    Dans le cas où la première possibilité est la meilleure, comment la mettre en place ?
    A mon avis, il vaut mieux passer par de la transparence plutot que par du color keying, a moins que ce soit un jeu pour des telephones portables.
    Il n'y a pas beaucoup d'interet de mettre un pixel sur 24 bits. La plupart des processeurs manipulent des mots de 32 bits.
    Mais bon, le mieux, c'est d'essayer.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Par défaut
    Ok merci, je m'en doutais un peu mais je préfère être sûr. Les détails c'est important aussi >>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/02/2011, 15h55
  2. Réponses: 6
    Dernier message: 03/12/2010, 21h22
  3. accélération graphique du diaporama
    Par laudump dans le forum Powerpoint
    Réponses: 6
    Dernier message: 25/06/2008, 10h03
  4. Problème d'accélération graphique....
    Par jeebay dans le forum OpenGL
    Réponses: 3
    Dernier message: 02/08/2004, 17h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo