我正在開發一個項目,我已經閱讀了儘可能多的關於java的雙緩衝。我想要做的是添加一個組件或面板或東西到我的JFrame包含雙緩衝表面繪製。如果可能,我想使用硬件加速,否則使用常規軟件渲染器。我的代碼看起來像這樣到目前爲止:Java雙緩衝
public class JFrameGame extends Game {
protected final JFrame frame;
protected final GamePanel panel;
protected Graphics2D g2;
public class GamePanel extends JPanel {
public GamePanel() {
super(true);
}
@Override
public void paintComponent(Graphics g) {
g2 = (Graphics2D)g;
g2.clearRect(0, 0, getWidth(), getHeight());
}
}
public JFrameGame() {
super();
gameLoop = new FixedGameLoop();
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new GamePanel();
panel.setIgnoreRepaint(true);
frame.add(panel);
panel.setVisible(true);
frame.setVisible(true);
}
@Override
protected void Draw() {
panel.repaint(); // aquire the graphics - can I acquire the graphics another way?
super.Draw(); // draw components
// draw stuff here
// is the buffer automatically swapped?
}
@Override
public void run() {
super.run();
}
}
我創建了一個抽象遊戲類和一個調用Update和Draw的遊戲循環。現在,如果您看到我的意見,那是我主要關心的問題。有沒有辦法獲得圖形一次,而不是通過重繪和paintComponent,然後分配每個重繪變量?此外,該硬件是否默認加速?如果不是,我應該怎麼做才能使硬件加速?
相關:http://stackoverflow.com/questions/2067255/bufferstrategy-vs-diy-double-buffering-in-jframe – finnw 2011-05-08 00:12:58