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:
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:
BufferedImage image = gc.createCompatibleImage(bufImage.getWidth(), bufImage.getHeight(), Transparency.BITMASK);
par
Code:
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!