Graphics2DFramework ライブラリ

- 目次 -


概要 - Abstract

このライブラリ graphics2d.Graphics2DFramework は、2DCG( 2次元グラフィックス )を手軽に扱うための軽量フレームワークです。

VCSSLの標準ライブラリ「 Graphics2D 」や「 GUI 」だけを用いて、ゼロから2DCGプログラムを記述する場合、
ウィンドウ・レンダラー(描画エンジン)の生成や、アニメーションループ、基本的なイベントハンドラなど、いくつかの定型的な処理を、毎回記述しなければいけません。
そこで、この Graphics2DFramework では、上述のような定型処理を、雛形のようにあらかじめ用意する事によって、手軽な2DCG利用をサポートします。

・必要な処理の記述

Graphics2DFramework は、構造的には、単体で既に完成した2DCGプログラムです。実際、単体で実行する事が可能です。
ただし、単体では何の描画内容も無いため、ただ白い画面が表示されるだけです。

そこで実際には、自作モジュールから Graphics2DFramework を import し、3Dモデルの配置や移動など、必要な処理を記述します。
そういった処理は、いくつかの決まった名前の関数を定義し、そこに記述します。つまり、GUIなどのイベントハンドラと同じ仕組みです。
するとそれらのイベントハンドラ関数を、Graphics3DFramework が適切なタイミングで自動実行します。

Graphics2DFramework が自動実行するイベントハンドラ関数は、下記のものがあります。定義は必須では無いので、必要な関数だけを定義し、記述して下さい。

  • void onStart( int renderer ) - 起動時に一度だけ実行されます。スプライトの生成・配置などの初期化処理は、ここに記述します。旧称 initialize も使用可能です。
  • void onExit( int renderer ) - 終了時に一度だけ実行されます。終了時に行いたい処理があれば、ここに記述します。旧称 finalize も使用可能です。
  • void onPaint( int renderer ) - 画面更新タイミング(毎秒数十回)で毎回実行されます。アニメーションの2DCG描き込み(直接描画)を行いたい場合などは、ここに記述します。旧称 paint も使用可能です。
  • void onUpdate( int renderer ) - 画面更新タイミング(毎秒数十回)の間で毎回実行されます。スプライトの移動などを行いたい場合などは、ここに記述します。旧称 update も使用可能です。
  • void onResize( int renderer ) - ウィンドウサイズが変更された場合に実行されます。画面に配置したGUI部品のレイアウト調整などを行いたい場合は、ここに記述します。旧称 resize も使用可能です。
上記関数のいずれも、引数 renderer には、2DCGレンダラーのID が渡されます。これは描画やスプライトの登録などに使用します。

・ウィンドウのカスタマイズ

Graphics2DFramework では、ウィンドウ内に余白領域を設定し、そこにボタンやテキストフィールドなどのGUI部品を配置する事ができます。
余白の設定は、setMarginTop ( int margin ) 関数や setMarginLeft ( int margin ) 関数などで行います。
そして getWindow ( ) 関数でウィンドウのIDを取得し、余白領域にGUI部品を自由に配置してください。

・フレームレート調整

加えて、Graphics2DFramework は、フレームレートの自動調整機構も備えています。
具体的には、Graphics2DFramework は、毎フレーム間の所要時間を計測し、常に設定された目標フレームレートに近づくよう、アニメーションループのウェイト ( 待機時間 ) を自動調整します。
目標フレームレートは setFrameRate ( float rate ) で設定します。また、実測フレームレートは getCurrentFrameRate ( ) で取得可能です。

・処理落ち

なお、実行環境の処理速度にも依存しますが、描画する画面サイズが大きかったり、描画内容が重かったりすると、
アニメーションの待機時間を最小にしても、実測フレームレートが目標フレームレートに達しなくなる現象 ―― 処理落ち ―― が生じます。

処理落ちが発生すると、画面の再描画処理が追いつかなくなり、画面がちらつく場合があります。
その場合は、目標フレームレートを実測フレームレートの限界よりも余裕のある値に設定する事で、画面のちらつきを抑える事ができます。
しかし、実測フレームレートは環境に大きく依存するため、代わりに setAnimationWaitMin ( int wait ) 関数でアニメーションウェイトの下限値(ミリ秒単位)を大きめに設定する事でも、
画面のちらつきを抑える事ができます( ただしこの場合、実測フレームレートの限界は低下します )。


目次 - Index

int getGraphics()
2DCGのグラフィックスIDを返します。
int getRenderer()
2DCGのレンダラーIDを返します。
int getImageLabel()
描画内容を表示する、画像ラベルのGUIコンポーネントIDを返します。
int getGraphicsLabel()
画像ラベルのGUIコンポーネントIDを返します。この関数には、より新しい getImageLabel がサポートされています。この関数は互換目的でサポートされています。
int getWindow()
ウィンドウのGUIコンポーネントIDを返します。
void setAnimationState(bool enable)
アニメーションモードの有効/無効を設定します。
bool getAnimationState()
アニメーションの有効/無効を取得します。
void setFrameRate(float rate)
アニメーションの画面更新頻度( 1秒間あたりの描画回数 )を設定します。
float getFrameRate()
アニメーションの画面更新頻度( 1秒間あたりの描画回数 )の設定値を取得します。
float getCurrentFrameRate()
アニメーションの画面更新頻度( 1秒間あたりの描画回数 )の実測値を取得します。
int getLastFrameTime()
アニメーションの最終画面更新時刻を取得します。時刻は、プログラム開始時刻からの経過時間を、通常はミリ秒単位で表したものが返されます。ただし単位は処理系によって異なる可能性があります。処理系の依存性を完全に排除するためには、Time.millisecond関数を挟んで使用して下さい。
void setPaintGraphics2DState(bool b)
画面描画時(paintコール前)に、自動でGraphics2D.paintGraphics2Dをコールするかどうかを設定します。trueを指定すると自動でコールされます。falseに設定すると自動でコールされないので、paintイベントハンドラなどで明示的にコールする必要があります。
bool getPaintGraphics2DState()
画面描画時(paintコール前)に、自動でGraphics2D.paintGraphics2Dをコールするかどうかを取得します。
void setBackgroundColor(int r, int g, int b, int a)
背景色を設定します。引数には、背景色の 赤,緑,青,α成分 を、0〜255の範囲で指定します。
void setBackgroundColor(int color[ ])
背景色を設定します。引数には、背景色の 赤,緑,青,α成分 を、0〜255の範囲で格納した配列を指定します。
int[ ] getBackgroundColor()
背景色を取得します。戻り値には、背景色の 赤,緑,青,α成分 を、0〜255の範囲で格納した配列が返されます。
void setWindowTitle(string title)
ウィンドウタイトルを設定します。
string getWindowTitle()
ウィンドウタイトルを取得します。
void setWindowSize(int width, int height)
ウィンドウサイズを設定します。
void setWindowSize(int size[ ])
ウィンドウサイズを設定します。
int[ ] getWindowSize()
ウィンドウサイズを取得します。
void setWindowLocation(int x, int y)
ウィンドウの位置を設定します。
void setWindowLocation(int location[ ])
ウィンドウの位置を設定します。
int[ ] getWindowLocation()
ウィンドウの位置を取得します。
void setMarginRight(int margin)
ウィンドウ右側の余白を設定します。
int getMarginRight()
ウィンドウ右側の余白を取得します。
void setMarginLeft(int margin)
ウィンドウ左側の余白を設定します。
int getMarginLeft()
ウィンドウ左側の余白を取得します。
void setMarginTop(int margin)
ウィンドウ上側の余白を設定します。
int getMarginTop()
ウィンドウ上側の余白を取得します。
void setMarginBottom(int margin)
ウィンドウ下側の余白を設定します。
int getMarginBottom()
ウィンドウ下側の余白を取得します。
void setAnimationWaitMin(int wait)
アニメーションウェイト(メインループのウェイト)の下限値を設定します。
int getAnimationWaitMin()
アニメーションウェイト(メインループのウェイト)の下限値を設定します。
void setAnimationWaitMax(int wait)
アニメーションウェイト(メインループのウェイト)の上限値を設定します。
int getAnimationWaitMax()
アニメーションウェイト(メインループのウェイト)の上限値を設定します。
void setMainLoopState(bool state)
メインループの継続状態を設定します。falseに設定するとアニメーションのメインループを脱出し、プログラムを終了します。
bool getMainLoopState()
メインループの継続状態を取得します。
string[ ] getMainArgument()
main関数の引数を取得します。
void export( string filePath, string format, float quality )
現在の描画ラベルの内容を、画像ファイルに出力します。ファイルの出力は、この関数をコールした瞬間に行われるわけでは無く、次回の画面更新タイミングに合わせて実行されます。
void main( string args[ ] )
main関数です。通常は自動で実行され、frameworkMain関数をコールします。ただし、メインプログラムでmain関数を定義する場合は、こちらは自動で実行されなくなるので、下記のframeworkMainを明示的に呼ぶ必要があります。
void frameworkMain( string args[ ] )
フレームワークのメイン処理です。通常はmain関数から自動で実行されます。ただし、メインプログラムでmain関数を定義する場合は、自動で実行されなくなるので、適当なタイミングで呼ぶ必要があります。
void onWindowResize( int id, int width, int height )
ウィンドウがリサイズされた際にコールされるイベントハンドラです。
void onWindowClose( int id )
ウィンドウが閉じられた際にコールされるイベントハンドラです。
void paintWindow()
ウィンドウの再描画を行います。アニメーションの画面更新タイミングで自動的にコールされますが、任意のタイミングで明示的に呼び出して再描画させる事も可能です。
void render()
paint関数などをコールし、画面表示内容を描画します。通常は自動で実行されますが、アニメーションを無効にしている場合などは、画面更新時に明示的に呼び出す必要があります。

構造体 - Structs

- なし - None -


変数 - Variables

- なし - None -


関数 - Functions

定義
- Signature
int getGraphics()
詳細
- Details
2DCGのグラフィックスIDを返します。
戻り値
- Return
2DCGのグラフィックスID
定義
- Signature
int getRenderer()
詳細
- Details
2DCGのレンダラーIDを返します。
戻り値
- Return
2DCGのレンダラーID
定義
- Signature
int getImageLabel()
詳細
- Details
描画内容を表示する、画像ラベルのGUIコンポーネントIDを返します。
戻り値
- Return
画像ラベルのGUIコンポーネントID
定義
- Signature
int getGraphicsLabel()
詳細
- Details
画像ラベルのGUIコンポーネントIDを返します。この関数には、より新しい getImageLabel がサポートされています。この関数は互換目的でサポートされています。
戻り値
- Return
描画領域ラベルのGUIコンポーネントID
定義
- Signature
int getWindow()
詳細
- Details
ウィンドウのGUIコンポーネントIDを返します。
戻り値
- Return
ウィンドウのGUIコンポーネントID
定義
- Signature
void setAnimationState(bool enable)
詳細
- Details
アニメーションモードの有効/無効を設定します。
引数
- Arguments
enable : アニメーションモードの有効/無効(trueならば有効)
定義
- Signature
bool getAnimationState()
詳細
- Details
アニメーションの有効/無効を取得します。
戻り値
- Return
アニメーションモード有効/無効(trueならば有効)
定義
- Signature
void setFrameRate(float rate)
詳細
- Details
アニメーションの画面更新頻度( 1秒間あたりの描画回数 )を設定します。
引数
- Arguments
rate : 画面更新頻度
定義
- Signature
float getFrameRate()
詳細
- Details
アニメーションの画面更新頻度( 1秒間あたりの描画回数 )の設定値を取得します。
戻り値
- Return
画面更新頻度(設定値)
定義
- Signature
float getCurrentFrameRate()
詳細
- Details
アニメーションの画面更新頻度( 1秒間あたりの描画回数 )の実測値を取得します。
戻り値
- Return
画面更新頻度(実測値)
定義
- Signature
int getLastFrameTime()
詳細
- Details
アニメーションの最終画面更新時刻を取得します。時刻は、プログラム開始時刻からの経過時間を、通常はミリ秒単位で表したものが返されます。ただし単位は処理系によって異なる可能性があります。処理系の依存性を完全に排除するためには、Time.millisecond関数を挟んで使用して下さい。
戻り値
- Return
最終画面更新時刻(通常はミリ秒単位)
定義
- Signature
void setPaintGraphics2DState(bool b)
詳細
- Details
画面描画時(paintコール前)に、自動でGraphics2D.paintGraphics2Dをコールするかどうかを設定します。trueを指定すると自動でコールされます。falseに設定すると自動でコールされないので、paintイベントハンドラなどで明示的にコールする必要があります。
引数
- Arguments
state : 設定した状態
定義
- Signature
bool getPaintGraphics2DState()
詳細
- Details
画面描画時(paintコール前)に、自動でGraphics2D.paintGraphics2Dをコールするかどうかを取得します。
戻り値
- Return
取得した状態
定義
- Signature
void setBackgroundColor(int r, int g, int b, int a)
詳細
- Details
背景色を設定します。引数には、背景色の 赤,緑,青,α成分 を、0〜255の範囲で指定します。
引数
- Arguments
r : 背景色(赤、0〜255)
g : 背景色(緑、0〜255)
b : 背景色(青、0〜255)
a : 背景色(α成分、0〜255)
定義
- Signature
void setBackgroundColor(int color[ ])
詳細
- Details
背景色を設定します。引数には、背景色の 赤,緑,青,α成分 を、0〜255の範囲で格納した配列を指定します。
引数
- Arguments
color : 背景色配列([0]=赤、[1]=緑、[2]=青、[3]=α成分、各0〜255)
定義
- Signature
int[ ] getBackgroundColor()
詳細
- Details
背景色を取得します。戻り値には、背景色の 赤,緑,青,α成分 を、0〜255の範囲で格納した配列が返されます。
戻り値
- Return
背景色配列([0]=赤、[1]=緑、[2]=青、[3]=α成分、各0〜255)
定義
- Signature
void setWindowTitle(string title)
詳細
- Details
ウィンドウタイトルを設定します。
定義
- Signature
string getWindowTitle()
詳細
- Details
ウィンドウタイトルを取得します。
定義
- Signature
void setWindowSize(int width, int height)
詳細
- Details
ウィンドウサイズを設定します。
引数
- Arguments
width : 幅
height : 高さ
定義
- Signature
void setWindowSize(int size[ ])
詳細
- Details
ウィンドウサイズを設定します。
引数
- Arguments
size : ウィンドウサイズ([0]=幅、[1]=高さ)
定義
- Signature
int[ ] getWindowSize()
詳細
- Details
ウィンドウサイズを取得します。
戻り値
- Return
ウィンドウサイズ([0]=幅、[1]=高さ)
定義
- Signature
void setWindowLocation(int x, int y)
詳細
- Details
ウィンドウの位置を設定します。
引数
- Arguments
x : ウィンドウ左上のX座標
y : ウィンドウ左上のY座標
定義
- Signature
void setWindowLocation(int location[ ])
詳細
- Details
ウィンドウの位置を設定します。
引数
- Arguments
size : ウィンドウ左上の座標([0]=X座標、[1]=Y座標)
定義
- Signature
int[ ] getWindowLocation()
詳細
- Details
ウィンドウの位置を取得します。
戻り値
- Return
ウィンドウ左上の座標([0]=X座標、[1]=Y座標)
定義
- Signature
void setMarginRight(int margin)
詳細
- Details
ウィンドウ右側の余白を設定します。
引数
- Arguments
margin : 余白(ピクセル)
定義
- Signature
int getMarginRight()
詳細
- Details
ウィンドウ右側の余白を取得します。
戻り値
- Return
余白(ピクセル)
定義
- Signature
void setMarginLeft(int margin)
詳細
- Details
ウィンドウ左側の余白を設定します。
引数
- Arguments
m : 余白(ピクセル)
定義
- Signature
int getMarginLeft()
詳細
- Details
ウィンドウ左側の余白を取得します。
戻り値
- Return
余白(ピクセル)
定義
- Signature
void setMarginTop(int margin)
詳細
- Details
ウィンドウ上側の余白を設定します。
引数
- Arguments
m : 余白(ピクセル)
定義
- Signature
int getMarginTop()
詳細
- Details
ウィンドウ上側の余白を取得します。
戻り値
- Return
余白(ピクセル)
定義
- Signature
void setMarginBottom(int margin)
詳細
- Details
ウィンドウ下側の余白を設定します。
引数
- Arguments
m : 余白(ピクセル)
定義
- Signature
int getMarginBottom()
詳細
- Details
ウィンドウ下側の余白を取得します。
戻り値
- Return
余白(ピクセル)
定義
- Signature
void setAnimationWaitMin(int wait)
詳細
- Details
アニメーションウェイト(メインループのウェイト)の下限値を設定します。
定義
- Signature
int getAnimationWaitMin()
詳細
- Details
アニメーションウェイト(メインループのウェイト)の下限値を設定します。
定義
- Signature
void setAnimationWaitMax(int wait)
詳細
- Details
アニメーションウェイト(メインループのウェイト)の上限値を設定します。
定義
- Signature
int getAnimationWaitMax()
詳細
- Details
アニメーションウェイト(メインループのウェイト)の上限値を設定します。
定義
- Signature
void setMainLoopState(bool state)
詳細
- Details
メインループの継続状態を設定します。falseに設定するとアニメーションのメインループを脱出し、プログラムを終了します。
引数
- Arguments
state : メインループの継続状態
定義
- Signature
bool getMainLoopState()
詳細
- Details
メインループの継続状態を取得します。
戻り値
- Return
メインループの継続状態
定義
- Signature
string[ ] getMainArgument()
詳細
- Details
main関数の引数を取得します。
戻り値
- Return
main関数の引数
定義
- Signature
void export( string filePath, string format, float quality )
詳細
- Details
現在の描画ラベルの内容を、画像ファイルに出力します。ファイルの出力は、この関数をコールした瞬間に行われるわけでは無く、次回の画面更新タイミングに合わせて実行されます。
引数
- Arguments
filePath : 出力ファイル名またはファイルパス
format : ファイル形式("PNG"または"JPEG")
quality : 品質
定義
- Signature
void main( string args[ ] )
詳細
- Details
main関数です。通常は自動で実行され、frameworkMain関数をコールします。ただし、メインプログラムでmain関数を定義する場合は、こちらは自動で実行されなくなるので、下記のframeworkMainを明示的に呼ぶ必要があります。
引数
- Arguments
args : メイン引数( getMainArgument関数で取得可能 )
定義
- Signature
void frameworkMain( string args[ ] )
詳細
- Details
フレームワークのメイン処理です。通常はmain関数から自動で実行されます。ただし、メインプログラムでmain関数を定義する場合は、自動で実行されなくなるので、適当なタイミングで呼ぶ必要があります。
引数
- Arguments
args : メイン引数( getMainArgument関数で取得可能 )
定義
- Signature
void onWindowResize( int id, int width, int height )
詳細
- Details
ウィンドウがリサイズされた際にコールされるイベントハンドラです。
引数
- Arguments
id : ウィンドウのGUIコンポーネントID
width : ウィンドウの幅
height : ウィンドウの高さ
定義
- Signature
void onWindowClose( int id )
詳細
- Details
ウィンドウが閉じられた際にコールされるイベントハンドラです。
引数
- Arguments
id : ウィンドウのGUIコンポーネントID
定義
- Signature
void paintWindow()
詳細
- Details
ウィンドウの再描画を行います。アニメーションの画面更新タイミングで自動的にコールされますが、任意のタイミングで明示的に呼び出して再描画させる事も可能です。
定義
- Signature
void render()
詳細
- Details
paint関数などをコールし、画面表示内容を描画します。通常は自動で実行されますが、アニメーションを無効にしている場合などは、画面更新時に明示的に呼び出す必要があります。


スポンサーリンク



スポンサーリンク

この階層の目次
お知らせ

Vnanoのスクリプトエンジンアーキテクチャ解説1: 全体像
2019年05月28日 - RINEARNでは現在、 アプリケーション組み込み用スクリプトエンジン「 Vnano 」を、オープンソースで開発中です。今回は、このスクリプトエンジンのアーキテクチャ面を掘り下げて解説します。

リニアンプロセッサー nano の先行開発版やソースコードリポジトリを公開
2019年04月16日 - オープンソースで開発中の小型プログラム関数電卓ソフト、「 リニアンプロセッサー nano 」の先行開発版やソースコードリポジトリを公開しました。概要と使用方法、ビルド方法などについて解説します。

各ソフトウェアの最新版を一括でリリース、OpenJDKのJava実行環境(JRE)に対応
2019年03月06日 - RINEARNでは3月6日に、主要なソフトウェアの最新版を一括でリリースしました。今回のアップデートには、以前お知らせした、OpenJDKで生成したJREへの対応が含まれています。その概要等をお知らせします。

新着
連番ファイルから3Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、3Dグラフを高速で連続描画して、アニメーションさせるツールです。
2019年06月03日
連番ファイルから2Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、2Dグラフを高速で連続描画して、アニメーションさせるツールです。
2019年05月24日
[公式ガイドサンプル] 立体モデルを生成して3D空間に配置する

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを生成し、3D空間に配置します。
2019年05月21日
[公式ガイドサンプル] ポリゴンを生成して3D空間に配置する

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体の基本的な構成要素となるポリゴンを生成し、3D空間に配置します。
2019年05月20日
[公式ガイドサンプル] CSVファイルにデータを書き出し&読み込んで、複雑な3次元曲面のグラフを描く(魔法陣形)

「VCSSLスタートアップガイド」内のサンプルコードです。CSVファイルにデータを書き出し、さらにそれを読み込んで、魔法陣のような3次元曲面のグラフを描画します。
2019年05月17日
開発元Twitterアカウント