この Graphicsモジュールを使うことで、現在のOpenGL コンテキストの情報を取得したり、OpenGL にアクセスしたりできます。また、現在の端末のディスプレイやアプリケーションウィンドウの情報も取得できます。 具体的には、スクリーンサイズ、ピクセル密度、色深度・深度/ステンシルバッファ・アンチエイリアス機能といったフレームバッファプロパティについての情報が全てこのクラスから参照できます。 他の一般的なモジュールと同様に、Gdx クラスの静的フィールドを介してアクセスを行います。
このモジュール固有の用途は、ローレベルのコマンドや照会を実行するために、より直接的にカレントOpenGL コンテキストへアクセスすることです。
以下の例では、OpenGL ES2アプリケーションのコンテキストにアクセスし、viewport を設定してフレーム と深度バッファをクリアしています :
Gdx.gl20.glViewport( 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight() ); Gdx.gl20.glClearColor( 0, 0, 0, 1 ); Gdx.gl20.glClear( GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT );
Note the use of getWidth()
/ getHeight()
to access the current application window dimensions in setting the viewport as well as the use of constants from the GL20
class just as one would do in a regular OpenGL program.
Libgdx を使用するうえでの大きな利点は、高レイヤの抽象化された機能で足りない場合は低レイヤの機能を使用できることです。
各バージョンのOpenGL ESは、バージョンに依存せず使用できる GLCommon インタフェースだけではなく、バージョン独自のインタフェースを介して使用することができます。 GL20 を使用する場合は、アプリケーションに対して起動時にOpenGL ES2の使用を指示する必要があるので注意してください。
Access to the OpenGL Utility class ( that doesn't exist, this article needs to be rewritten! ) is also provided, although this functionality may be better handled through Libgdx's own Orthographic and Perspective camera classes. There is also a simple method for querying support for named extensions in supportsExtension()
. Just supply the name of the extension to determine support on the current device.
Graphics クラスの中で特に便利なメソッドがgetDeltaTime()
です。これは最後にフレームを描写してからの経過時間を取得できます。
これはフレームの独立性が必要ではない時間ベースアニメーションの場合に特に役立ちます。
例えば、Stage インスタンス内のActor や UI のアニメーションは、以下のようなアプリケーションの描写メソッドを実行することで制御できます:
stage.act( Math.min( Gdx.graphics.getDeltaTime(), 1/30 ) );
最大時間刻み幅として 1/30 秒を設定している点に注意してください。
これはアニメーションがカクカクする可能性があるのでそれを防ぐためです。
getDeltaTime()
は簡単なアニメーションを作成するのには便利ですがフレーム依存なので、ゲームロジックや物理演算のようなより細かい処理では他のタイミング操作方法を使ったほうが良いです。
もう一つ便利なメソッドは getFramesPerSecond()
です。これは、簡単な診断をするために現在のフレームレートの平均値を返します。
ですが、さらにシビアな診断をする場合には FPSLogger の使用を推奨します。
デスクトップの場合、Graphics クラスではウィンドウのアイコンとタイトルを設定する機能も提供されています。 当たり前ですが、これらのメソッドはアイコンやタイトルが表示されないプラットフォームでは反映されません。
setDisplayMode()
メソッドと setVSync()
メソッドは、それぞれディスプレイモードをフルスクリーンに設定し、垂直同期の有効化/無効化を行います。
これらのメソッドは特定のプラットフォームでしか動作しないので覚えておいてください。