誰かが以前に次の問題に遭遇したことがあることを願っています。
私のJavaアプリケーションにはMacでのグラフィックパフォーマンスの問題があるため、簡単なテストアプリケーションを作成しました(以下のコード)。これをWindowsで実行すると、コンソールに次のように表示されます。
GraphicsConfigurationフリッピング?真の
BufferStrategyフリッピング?true
Mac OSでまったく同じコードを実行すると、次のようになります。
GraphicsConfigurationフリッピング?真の
BufferStrategyフリッピング?false
これは、Mac OSでは、ウィンドウ化されたアプリケーションでページめくりがサポートされていないことを意味しますか?フルスクリーンにならずにMacOSでページめくりを機能させるためのトリックはありますか?
Mattijs 、すべてのポインタは大歓迎です
WindowsXPおよびMacOS10.5でのJDK1.6の使用。
コード:
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();
}
}