j'ai créé 256x256 image avec rouge = x et alpha = y:Comment dessiner des images avec accélération matérielle sur toutes les plates-formes?
int[] pix = new int[256*256];
for (int i = 0; i < pix.length; ++i)
pix[i] = i << 16;
BufferedImage img1 = new BufferedImage(256, 256, BufferedImage.TYPE_INT_ARGB);
img1.setRGB(0, 0, 256, 256, pix, 0, 256);
et ont copié à l'image volatile:
VolatileImage img2 = canvas.createVolatileImage(256, 256);
img2.createGraphics().drawImage(img1, 0, 0, null);
Quand je dessine BufferedImage à la toile, ce processus de manière incorrecte alpha et pas accéléré (0.9msec pour drawImage):
Quand je dessine VolatileImage, ce processus al pha et accélérées (0.03ms):
Mais sous Windows. Sous MacOS je vois un résultat différent. Pour BufferedImage, il ne traite pas alpha, mais accéléré, pour VolatileImage, il traite alpha correctement, mais pas accéléré. (Ou peut-être les deux ne sont pas accélérés, juste un traitement logiciel de BufferedImage beaucoup plus rapide). Question - comment dessiner correctement l'image avec un traitement alpha correct et avec une accélération sur toutes les plates-formes.
ps. img2.setAccelerationPriority (1) n'a aucun effet.
pps. j'ai eu tort, il ne corrige pas le traitement alpha dans le second cas, il s'agit simplement d'une image précalculée avec alpha appliquée à la couleur de fond par défaut des cavas.