1

フルスクリーンアプリケーションを開発しようとしていますが、ダブルバッファに問題があります。

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);
}

ひらめきがひどく見えます。テキストは他のすべてのバッファにのみ描画され、残りのバッファには白い背景が含まれているようです。何が問題なのですか?

4

1 に答える 1

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();
...
于 2011-12-02T23:03:34.760 に答える