2011-12-02 5 views
1

フルスクリーンアプリケーションを開発しようとしていますが、ダブルバッファに問題があります。Javaダブルバッファリング - 他のすべてのフレームだけが描画される

public void create() 
{ 
    window = new JWindow(); 
    window.setIgnoreRepaint (true); 
    GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow (window); 
    window.setVisible (true); 
    window.createBufferStrategy (2); 
} 

public void renderCycle() 
{ 
    BufferStrategy strategy = window.getBufferStrategy(); 
    while (true) 
    { 
     render ((Graphics2D) strategy.getDrawGraphics()); 
     strategy.show(); 
    } 
} 

public void render (Graphics2D g) 
{ 
    g.setColor (Color.WHITE); 
    g.drawString ("Veikia", 100, 100); 
} 

私は重いちらつきを参照してください - テキストのみが他のすべてのバッファに描画され、残りのバッファが白色の背景が含まれているかのように思えます。何が問題なの?

答えて

1

これを試しました。MultiBufferTestlagの期間がモニタの対応するリフレッシュレートを下回るまでレンダリングのアーティファクトが表示されませんでした。あなたの例では、フレーム間に遅延がないようです。

... 
g.fillRect(0, 0, bounds.width, bounds.height); 
g.setColor(Color.black); // added 
g.drawString(String.valueOf(lag), 100, 100); // added 
bufferStrategy.show(); 
... 

私はフレーム期間を表示するために数行を追加しました
関連する問題