Я работаю над проектом и прочитал как можно больше о двойной буферизации в Java.То, что я хочу сделать, это добавить компонент или панель или что-то в мой JFrame, который содержит поверхность с двойной буферизацией для рисования.Я хочу использовать аппаратное ускорение, если это возможно, в противном случае используйте обычный программный рендер.Пока мой код выглядит так:
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.Теперь, если вы видите мои комментарии, это моя главная проблема.Есть ли способ получить графику один раз вместо того, чтобы проходить через repaint и paintComponent, а затем назначать переменную каждый перерисовывать?Кроме того, это оборудование ускоряется по умолчанию?Если нет, что я должен сделать, чтобы аппаратно ускорился?