缓冲策略和缓冲能力

BufferStrategy

在 Java 2 Standard Edition 中,您不必担心视频指针或视频内存就可以充分利用 Double 缓冲或页面翻转功能。添加了新类java\.awt\.image\.BufferStrategy的 Object 是为了方便以通用方式处理针对曲面和零部件的工程图,而与使用的缓冲区数量或显示它们的技术无关。

缓冲策略为您提供了两种通用的绘制方法:getDrawGraphicsshow。当您要开始绘图时,获取绘图图形并使用它。完成绘图并想要在屏幕上显示信息时,请致电show。设计这两种方法时,它们很合适地适合渲染循环:

BufferStrategy myStrategy;

while (!done) {
    Graphics g = myStrategy.getDrawGraphics();
    render(g);
    g.dispose();
    myStrategy.show();
}

还设置了缓冲策略来帮助您监视VolatileImage问题。在全屏独占 Pattern 下,VolatileImage问题尤其重要,因为窗口系统有时可以取回它给您的视频内存。一个重要的例子是,当用户在 Windows 中按下ALT+TAB组合键时,突然您的全屏程序在后台运行,并且视频内存丢失。您可以调用contentsLost方法来确定是否发生了这种情况。同样,当窗口系统将内存返回给您时,您可以使用contentsRestored方法进行查找。

BufferCapabilities

如前所述,不同的 os,甚至同一 os 上的不同图形卡,都可以使用不同的技术。向您公开了这些功能,以便您可以为应用程序选择最佳技术。

java\.awt\.BufferCapabilities类封装了这些功能。每个缓冲策略都由其缓冲功能控制,因此为您的应用程序选择正确的策略非常关键。要找出可用的功能,请从图形设备上可用的GraphicsConfiguration对象中调用getBufferCapabilities方法。

Java 2 Standard Edition 1.4 版提供的功能是:

要为组件创建缓冲策略,请调用createBufferStrategy方法,并提供所需的缓冲数量(此数量包括主表面)。如果需要任何特定的缓冲技术,请提供适当的BufferCapabilities对象。请注意,使用此版本的方法时,如果选择不可用,则必须catchAWTException。还要注意,这些方法仅在CanvasWindow上可用。

一旦为组件创建了特定的缓冲策略,就可以使用getBufferStrategy方法对其进行操作。请注意,此方法也仅适用于画布和窗口。

Programming Tips

有关使用缓冲区功能和缓冲区策略的一些技巧:

BufferStrategy myStrategy;

while (!done) {
    Graphics g;
    try {
        g = myStrategy.getDrawGraphics();
        render(g);
    } finally {
        g.dispose();
    }
    myStrategy.show();
}
首页