JavaTM 2 Platform
Standard Ed. 5.0

java.awt.image
クラス BufferStrategy

java.lang.Object
  上位を拡張 java.awt.image.BufferStrategy
直系の既知のサブクラス:
Component.BltBufferStrategy, Component.FlipBufferStrategy

public abstract class BufferStrategy
extends Object

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

導入されたバージョン:
1.4
関連項目:
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
 

コンストラクタの詳細

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()
メモリを複製 (Blit) するかディスプレイポインタを変更する (切り替える) ことにより、次に使用可能なバッファを可視状態にします。


JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。