|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.awt.image.BufferStrategy
BufferStrategy
クラスは、特定の Canvas
または Window
上の複雑なメモリを編成するメカニズムを表します。特定のバッファストラテジが実装可能かどうか、およびその実装方法は、ハードウェアとソフトウェアの制限事項によって決まります。これらの制限事項は、Canvas
または Window
を作成するときに使用する GraphicsConfiguration
の機能を介して検出されます。
「バッファ」および「表面」という語は同義であり、ビデオデバイスメモリ内またはシステムメモリ内での連続したメモリ領域を指します。
複雑なバッファストラテジにはいくつかの種類があり、一般的なものとしては、順次リングバッファリング、Blit バッファリング、およびステレオバッファリングがあります。もっとも一般的なのは、順次リングバッファリング (ダブルバッファリングまたはトリプルバッファリング) です。アプリケーションは単一の「バックバッファ」へ描画してから、データを複製するかビデオポインタを移動することにより単一ステップで内容をフロント (ディスプレイ) へ移動します。ビデオポインタを移動することでバッファが交換され、最初に描画されたバッファまたはデバイスに現在表示されているイメージが「フロントバッファ」になります。これは「ページフリッピング」と呼ばれます。
代わりに、ビデオポインタを移動するのではなく、チェーン内で先行してバックバッファの内容を複製または「Blit」することができます。
Double buffering: *********** *********** * * ------> * * [To display] <---- * Front B * Show * Back B. * <---- Rendering * * <------ * * *********** *********** Triple buffering: [To *********** *********** *********** display] * * --------+---------+------> * * <---- * Front B * Show * Mid. B. * * Back B. * <---- Rendering * * <------ * * <----- * * *********** *********** ***********
ステレオバッファリングは、左右の目に対して別々のイメージ描画をサポートするハードウェア用です。順次リングバッファリングと似ていますが、両眼用に 2 つのバッファチェーンがあります。2 つのバッファチェーンは同時に切り替わります。
Stereo buffering: *********** *********** * * ------> * * [To left eye] <---- * Front B * * Back B. * <---- Rendering * * <------ * * *********** *********** Show *********** *********** * * ------> * * [To right eye] <--- * Front B * * Back B. * <---- Rendering * * <------ * * *********** ***********
バッファストラテジの作成と使用の例を示します。
// 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();
Component
,
GraphicsConfiguration
コンストラクタの概要 | |
BufferStrategy()
|
メソッドの概要 | |
abstract boolean |
contentsLost()
getDrawGraphics への最後の呼び出しのために描画バッファが消失したかどうかを返します。 |
abstract boolean |
contentsRestored()
描画バッファが消失状態から最近復元され、デフォルトのバックグラウンドカラー (白) に再初期化されたかどうかを返します。 |
abstract BufferCapabilities |
getCapabilities()
|
abstract Graphics |
getDrawGraphics()
|
abstract void |
show()
メモリを複製 (Blit) するかディスプレイポインタを変更する (切り替える) ことにより、次に使用可能なバッファを可視状態にします。 |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
public BufferStrategy()
メソッドの詳細 |
public abstract BufferCapabilities getCapabilities()
public abstract Graphics getDrawGraphics()
public abstract boolean contentsLost()
getDrawGraphics
への最後の呼び出しのために描画バッファが消失したかどうかを返します。バッファストラテジ内のバッファは通常、VolatileImage
型であるため消失することがあります。消失バッファについては、VolatileImage
を参照してください。
VolatileImage
public abstract boolean contentsRestored()
VolatileImage
型であるため消失することがあります。getDrawGraphics
への最後の呼び出しのために消失状態にあった表面が最近復元された場合は、再ペイントが必要なこともあります。消失バッファについては、VolatileImage
を参照してください。
VolatileImage
public abstract void show()
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.