Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java双缓冲-仅每隔绘制一帧_Java_Fullscreen_Doublebuffered - Fatal编程技术网

Java双缓冲-仅每隔绘制一帧

Java双缓冲-仅每隔绘制一帧,java,fullscreen,doublebuffered,Java,Fullscreen,Doublebuffered,我正在尝试开发一个全屏应用程序,但是我遇到了双缓冲区的问题 public void create () { window = new JWindow (); window.setIgnoreRepaint (true); GraphicsEnvironment.getLocalGraphicsEnvironment ().getDefaultScreenDevice ().setFullScreenWindow (window); window.setVisibl

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

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);
}
我看到一个沉重的闪烁-似乎文本只绘制在其他缓冲区,其余缓冲区包含白色背景。有什么问题吗?

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

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

...
g.fillRect(0, 0, bounds.width, bounds.height);
g.setColor(Color.black); // added
g.drawString(String.valueOf(lag), 100, 100); // added
bufferStrategy.show();
...
我刚试过这个。直到
lag
周期低于监视器相应的刷新率,我才看到任何渲染工件。您的示例似乎在帧之间没有延迟

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

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