J'espère que quelqu'un est tombé sur le problème suivant avant.Le basculement de page Java n'est pas pris en charge sur Mac OS?
Mon application Java a des problèmes de performances graphiques sur Mac, j'ai donc fait une application de test simple (code ci-dessous). Lorsque je l'exécute sous Windows, la console me dit:
GraphicsConfiguration retournement? vrai
BufferStrategy renversant? vrai
Quand je lance le même code sur Mac OS, je reçois:
flipping GraphicsConfiguration? vrai
BufferStrategy renversant? False
Est-ce que cela signifie que sur Mac OS, le basculement de page n'est simplement pas pris en charge dans une application fenêtrée? Y a-t-il des astuces pour faire tourner les pages sur Mac OS sans passer en plein écran?
Tous les pointeurs sont bienvenus,
Mattijs
Utilisation JDK 1.6 sur Windows XP et Mac OS 10.5.
Le code:
import java.awt.image.BufferStrategy;
import javax.swing.*;
import java.awt.*;
public class Test {
int width = 640;
int height = 480;
GraphicsEnvironment graphEnv = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice graphDevice = graphEnv.getDefaultScreenDevice();
GraphicsConfiguration graphicConf = graphDevice.getDefaultConfiguration();
public Test() {
JFrame jFrame = new JFrame(graphicConf);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setTitle("double buffer test");
jFrame.setResizable(false);
jFrame.setFocusTraversalKeysEnabled(false);
Canvas canvas = new Canvas();
canvas.setSize(width, height);
canvas.setIgnoreRepaint(true);
jFrame.getContentPane().add(canvas);
jFrame.pack();
jFrame.setVisible(true);
System.out.println("GraphicsConfiguration flipping? " + graphicConf.getBufferCapabilities().isPageFlipping());
canvas.createBufferStrategy(2);
BufferStrategy bufferStrategy = canvas.getBufferStrategy();
System.out.println("BufferStrategy flipping? " + bufferStrategy.getCapabilities().isPageFlipping());
while(true) {
Graphics g = bufferStrategy.getDrawGraphics();
g.setColor(Color.BLACK);
g.fillRect(0,0,width,height);
g.setColor(Color.RED);
g.drawLine((int)(Math.random()*width),(int)(Math.random()*height),
(int)(Math.random()*width),(int)(Math.random()*height));
bufferStrategy.show();
g.dispose();
}
}
public static void main(String[] args) {
new Test();
}
}
Il était tout à l'heure, mais j'ai utilisé avec succès la page flipping (pas plein écran) dans JOGL sur un Mac. – finnw