[ 前へ | 目次 | 次へ ]

フレームワークの使用

ここでは、レンダラーや表示画面の生成などを自動化してくれる、フレームワークの使用方法を扱います。


面倒な定型処理を自動で行ってくれるフレームワーク

これまでは、レンダラーやグラフィックスデータ、および表示画面を生成したり、画面の GUI を描画させたりといった処理を、毎回行ってきました。しかし、これらの処理はいつも同じような内容なので、毎回いちいち書くのは面倒です。

そこで VCSSL の標準ライブラリには、これらの処理を自動で行ってくれるフレームワーク「 Graphics2DFramework 」が用意されています。これを使用すれば、ユーザーは、いくつかのタイミングで自動的に呼び出される関数の中に、描画内容の処理などをただ書くだけで済みます。

フレームワークを使用する方法は非常に簡単で、プログラム内でフレームワークを import するだけです。

import graphics2d.Graphics2DFramework ;

これだけで、プログラムを実行すると自動でレンダラーやグラフィックスデータが生成され、画面も表示されるようになります。 つまり、形の上では、2DCG の描画用プログラムとして一応できあがったものになります。ただし、この段階では画面上は真っ白で、まだ何も描画されません。

フレームワークの画面上に描画などを行わせるには、関数を定義する

画面に何らかの内容を描画させるには、プログラム内に onPaint という名前の関数を定義して、その中に行わせたい描画処理を記述します。 そうすると、その関数をフレームワーク側が適当なタイミングで実行してくれて、その結果が画面上に表示されるようになります。

これまでのプログラムでは、ユーザーが書いた内容だけが、「上の行から下の行へ」の流れで単純に実行されてきました。 しかしフレームワークを使用したプログラムでは、処理の流れを司るのはフレームワークであり、ユーザーはそこに「関数を定義して処理を追加していく」という形で開発を行います。 上で述べた onPaint 関数をはじめ、以下のような関数を定義して処理を追加できます:

・プログラムの最初に呼び出される関数(各種設定や、画像の読み込み処理などを記述)
void onStart ( int rendererID )

・画面更新周期ごとに呼び出される関数(画面の描画処理などを記述)
void onPaint ( int rendererID )

・画面更新周期ごとに呼び出される関数(アニメーションでの位置の更新処理などを記述)
void onUpdate ( int rendererID )

・画面サイズが変更されたときに呼び出される関数
void onResize ( int rendererID )

・プログラムを終了する時に呼び出される関数
void onExit ( int rendererID )

引数の「 int rendererID 」には、フレームワークから呼び出される際に、自動で用意されている2DCG レンダラー(描画エンジン)の ID が入っています。

なお、上記の関数を全て定義する必要はありません。使うものだけを定義し、処理を記述してください。 単純に画面上に絵を描きたいだけであれば、onPaint 関数だけで十分です。

onPaint関数は毎秒数十回(負荷にもよりますが、大体 1 秒間に 30 回ほど)の頻度で繰り返し実行され続けますが、それと交互に onUpdate 関数も実行されます。 アニメーション描画を行いたい場合は、この onUpdate 関数の中に、描画位置などの変数の値を少しずつ変化させるような処理を記述するとよいでしょう。

onStart 関数には、画像ファイルの読み込みなど、プログラムの最初に 1 度だけ行えばよい処理を記述します。 逆に onExit 関数には、画像ファイルの保存など、最後に 1 度だけ行いたい処理を記述します(画面が閉じられたタイミングで実行されます)。

プログラム例

それでは、実際にフレームワークを使用し、画面に単純な内容を描画させてみましょう。以下のように記述し、実行してみてください。

このプログラムを実行すると、グレーのウィンドウが表示され、その上に青い点が表示されます。

実行結果、グレーの画面に青い点の図。
実行結果
グレーの画面に、青い点が表示される。

続いて、アニメーションを行う例です。以下のように記述し、実行してみてください。

このプログラムを実行すると、先ほどと同様、グレーのウィンドウ上に青い点が表示されますが、青い点はゆっくりとアニメーションで移動していきます。

実行結果、グレーの画面に青い点の図。
実行結果
青い点がゆっくりとアニメーションで移動していく。


この階層の目次
お知らせ

リニアングラフ3DのVCSSL用APIにカメラ制御関数を追加、回転アニメーションツールも同梱
2019年10月09日 - RINEARNでは10月9日にソフトウェアの最新版をリリースしました。VCSSLのAPI関数の追加や、リニアングラフ3Dのアニメーションツールの追加など行っています。その概要をお知らせします。

小型関数電卓 RINPn(旧称リニアンプロセッサー nano)の公式ページを開設
2019年10月02日 - 現在オープンソースで開発中の、「シンプル&コンパクト」を目指した小型プログラマブル関数電卓ソフト「 RINPn 」の公式ページが、RINEARNサイト内にオープンしました。その概要をお知らせします。

Vnanoの公式サイトがオープン、チュートリアルやAPI仕様書等も掲載
2019年08月07日 - オープンソースのアプリケーション組み込み用スクリプトエンジン「 Vnano 」の公式サイトを開設しました。チュートリアルや、スクリプトエンジンのAPI仕様書などが参照できます。その概要をお知らせします。

新着
3Dグラフを回転アニメーションさせるツール

3Dグラフを、Z軸まわりにゆっくりと回転アニメーションさせるツールです。全角度のグラフを、連番の画像ファイルに保存する事もできます。
2019年10月09日
[公式ガイドサンプル] ユーザーのGUI操作に対して処理を行う

「VCSSL GUI開発ガイド」内のサンプルコードです。ユーザーがGUIを操作した際に行う処理を実装します。
2019年07月28日
[公式ガイドサンプル] 各種GUIコンポーネントを画面上に配置する

「VCSSL GUI開発ガイド」内のサンプルコードです。色々な種類のGUI部品を画面上に配置します。
2019年07月28日
連番ファイルから3Dグラフをアニメーション描画するツール

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

フォルダ内の連番データファイルを読み込み、2Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年05月24日
開発元Twitterアカウント