BufferStrategy Lagging

java graphics

241 просмотра

1 ответ

78 Репутация автора

Мое настольное приложение отстает. Я думаю, что-то не так в java.awt.image.BufferStrategy.

    private void render() {
    BufferStrategy bs = this.getBufferStrategy();

    if (bs == null) {
        this.createBufferStrategy(3);
        return;
    }
    // drawing
    Graphics g = bs.getDrawGraphics();

    g.dispose();
    bs.show();
    Toolkit.getDefaultToolkit().sync();
}

Я даже не начал рисовать. Я использовал то же самое в другом проекте, и это сработало, например, если метод рендеринга выглядит так, он работает нормально.

private void render(){
BufferStrategy bs = this.getBufferStrategy();

    if (bs == null ){
        this.createBufferStrategy(3);
        return;
    }
    // drawing
    Graphics g = bs.getDrawGraphics();
    g.setColor(Color.GRAY);
    g.fillRect(0, 0, getWidth(), getHeight());
     int row;   // Row number, from 0 to 7
     int col;   // Column number, from 0 to 7
     int x,y;   // Top-left corner of square

     for ( row = 0;  row < 8;  row++ ) {
        for ( col = 0;  col < 8;  col++) {
           x = col * 70;
           y = row * 70;
           if ( (row % 2) == (col % 2) )
              g.setColor(Color.white);
           else
              g.setColor(Color.black);
           g.fillRect(x, y, 70, 70);
        } 
     }
    g.dispose();
    bs.show();
    Toolkit.getDefaultToolkit().sync(); 
}

Основные вещи одинаковы. Почему первый отстает в тех же условиях?

Автор: Dexxrey Источник Размещён: 18.07.2016 03:20

Ответы (1)


0 плюса

1 Репутация автора

Попробуйте удалить:

    for ( row = 0;  row < 8;  row++ ) {
    for ( col = 0;  col < 8;  col++) {
       x = col * 70;
       y = row * 70;
       if ( (row % 2) == (col % 2) )
          g.setColor(Color.white);
       else
          g.setColor(Color.black);
       g.fillRect(x, y, 70, 70);
    } 
 }
Автор: Henrik Claassens Размещён: 12.10.2016 10:48
Вопросы из категории :
32x32