Java page flipping not supported on Mac OS?

前端 未结 2 1425
星月不相逢
星月不相逢 2021-01-22 18:21

I\'m hoping someone happens to have stumbled upon the following issue before.

My Java application has graphics performance issues on Mac, so I made a simple test applica

相关标签:
2条回答
  • 2021-01-22 18:38

    The bad news: I get the same result on the same Mac OS X configuration. The good news: isAccelerated() is true.

    System.out.println("BufferStrategy accelerated? " + bufferStrategy
        .getCapabilities().getFrontBufferCapabilities().isAccelerated());
    

    Instead of Canvas and BufferStrategy, I just use new JPanel(true).

    Addendum: For example,

    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.EventQueue;
    import java.awt.Graphics;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Random;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.Timer;
    
    public class NewTest extends JPanel implements ActionListener, Runnable {
    
        private Random r = new Random();
        private Timer t = new Timer(10, this);
    
        public static void main(String[] args) {
            EventQueue.invokeLater(new NewTest());
        }
    
        @Override
        public void run() {
            JFrame f = new JFrame("NewTest");
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.add(this);
            f.pack();
            f.setLocationRelativeTo(null);
            f.setVisible(true);
            t.start();
        }
    
        public NewTest() {
            super(true);
            this.setPreferredSize(new Dimension(640, 480));
        }
    
        @Override
        protected void paintComponent(Graphics g) {
            int width = this.getWidth();
            int height = this.getHeight();
            g.setColor(Color.BLACK);
            g.fillRect(0, 0, width, height);
            g.setColor(Color.RED);
            g.drawLine(r.nextInt(width), r.nextInt(height),
                r.nextInt(width), r.nextInt(height));
    
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
            this.repaint();
        }
    }
    
    0 讨论(0)
  • 2021-01-22 18:51

    On Linux this happens when I set command line parameter -Dsun.java2d.opengl=true So it may be worth a try to do the opposite -Dsun.java2d.opengl=false

    0 讨论(0)
提交回复
热议问题