【问题标题】:Java Double Buffering - Only Every Other Frame DrawnJava 双缓冲 - 仅每隔一帧绘制
【发布时间】:2011-12-02 21:50:21
【问题描述】:

我正在尝试开发一个全屏应用程序,但我遇到了双缓冲区问题。

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

我看到严重的闪烁 - 似乎文本仅在每个其他缓冲区上绘制,其余缓冲区包含白色背景。可能是什么问题?

【问题讨论】:

    标签: java fullscreen doublebuffered


    【解决方案1】:

    我刚试过这个MultiBufferTest。直到lag 时期低于显示器的相应刷新率,我才看到任何渲染工件。您的示例似乎在帧之间没有延迟。

    我添加了几行来显示帧周期:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2021-11-27
      • 1970-01-01
      • 2011-08-20
      • 2011-11-24
      • 2012-10-23
      • 2012-02-11
      相关资源
      最近更新 更多