|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.awt.image
类 BufferStrategy
java.lang.Object java.awt.image.BufferStrategy
-
public abstract class BufferStrategy
- extends Object
BufferStrategy
类表示用来在特定的 Canvas
或 Window
上组织复杂内存的机制。硬件和软件限制决定了是否能够实现特定的缓冲区策略以及如何实现它。从创建 Canvas
或 Window
时所使用的 GraphicsConfiguration
的性能中可发觉这些限制。
值得注意的是,术语 buffer 和 surface 意思相同:视频设备内存或系统内存中的连续内存区域。
存在几种类型的复杂缓冲区策略;常见的类型有连续环形 (ring) 缓冲、blit 缓冲和 stereo 缓冲。连续环形缓冲(即双缓冲或三次缓冲)是最常见的缓冲区策略;将一个应用程序绘制到单个后备缓冲区,然后单步将其内容移入到前端(显示),这可通过复制数据或移动视频指针完成。移动视频指针可交换缓冲区,于是绘制的第一个缓冲区成为前端缓冲区,或称设备上当前所显示的内容;这称为页面翻转。
作为一种替代方式,可以复制后备缓冲区的内容,即使用链而不是移动视频指针进行位图传输 (blitted)。
双缓冲: *********** *********** * * ------> * * [到显示器] <---- * Front B * Show * Back B. * <---- 呈现 * * <------ * * *********** *********** 三次缓冲: [到 *********** *********** *********** 显示器] * * --------+---------+------> * * <---- * Front B * Show * Mid. B. * * Back B. * <---- 呈现 * * <------ * * <----- * * *********** *********** ***********
Stereo 缓冲针对支持呈现分离图像(左眼或右眼)的硬件。它与连续环形缓冲类似,但是存在两个缓冲区链,每只眼睛一个链。两个缓冲区链同时翻转:
Stereo 缓冲: *********** *********** * * ------> * * [到左眼] <---- * Front B * * Back B. * <---- 呈现 * * <------ * * *********** *********** 显示 *********** *********** * * ------> * * [到右眼] <--- * Front B * * Back B. * <---- 呈现 * * <------ * * *********** ***********
以下是一个如何创建和使用缓冲区策略的例子:
// Check the capabilities of the GraphicsConfiguration
...
// Create our component
Window w = new Window(gc);
// Show our window
w.setVisible(true);
// Create a general double-buffering strategy
w.createBufferStrategy(2);
BufferStrategy strategy = w.getBufferStrategy();
// Render loop
while (!done) {
Graphics g = strategy.getDrawGraphics();
// Draw to graphics
...
strategy.show();
}
// Dispose the window
w.setVisible(false);
w.dispose();
- 从以下版本开始:
- 1.4
- 另请参见:
-
Component
,GraphicsConfiguration
构造方法摘要 | |
---|---|
BufferStrategy() |
方法摘要 | |
---|---|
abstract boolean |
contentsLost() 返回上次调用 getDrawGraphics 后绘制缓冲区是否丢失。 |
abstract boolean |
contentsRestored() 返回绘制缓冲区最近是否从丢失状态恢复,并重新初始化为默认背景色(白色)。 |
abstract BufferCapabilities |
getCapabilities() |
abstract Graphics |
getDrawGraphics() |
abstract void |
show() 通过复制内存(位图传输)或改变显示指针(翻转)使下一个可用缓冲区变为可见。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
BufferStrategy
public BufferStrategy()
方法详细信息 |
---|
getCapabilities
public abstract BufferCapabilities getCapabilities()
-
- 返回:
- 此策略的缓冲性能
getDrawGraphics
public abstract Graphics getDrawGraphics()
-
- 返回:
- 绘制缓冲区上的图形。由于性能的原因,此方法可能不是同步的;多个线程使用此方法时,应该在应用层对其进行处理。对所得到的图形对象的释放必须由应用程序来处理。
contentsLost
public abstract boolean contentsLost()
-
返回上次调用
getDrawGraphics
后绘制缓冲区是否丢失。由于缓冲区策略中的缓冲区通常是VolatileImage
类型的,因此它们有可能丢失。有关对丢失缓冲区的讨论,请参阅VolatileImage
。 -
- 另请参见:
-
VolatileImage
contentsRestored
public abstract boolean contentsRestored()
-
返回绘制缓冲区最近是否从丢失状态恢复,并重新初始化为默认背景色(白色)。由于缓冲区策略中的缓冲区通常是
VolatileImage
类型的,因此它们有可能丢失。如果上次调用getDrawGraphics
后,缓冲区最近已从丢失状态恢复,则缓冲区可能要求重新绘制。有关对丢失缓冲区的讨论,请参阅VolatileImage
。 -
- 另请参见:
-
VolatileImage
show
public abstract void show()
- 通过复制内存(位图传输)或改变显示指针(翻转)使下一个可用缓冲区变为可见。
-
所有类
|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |