[ 前へ | 目次 | 次へ ]

フレームワークの使用

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

スポンサーリンク


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

これまでは、レンダラーやグラフィックスデータ、および表示画面を生成したり、画面の 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 度だけ行いたい処理を記述します(画面が閉じられたタイミングで実行されます)。

プログラム例

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

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

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

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

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

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



スポンサーリンク



この階層の目次
お知らせ

コードアーカイブでVnano製プログラムの配信を開始
2020年12月20日 - ソフト内組み込み用のスクリプトエンジン/言語「 Vnano 」のサンプルコードやコンテンツ充実を兼ねて、Vnano 製プログラムの配信を、コードアーカイブにて開始しました。概要と初回配信リストをご紹介します。

リニアングラフ3DやVCSSLなどの各ソフトウェア最新版をリリース
2020年09月21日 - 諸事情によりお知らせが遅くなってしまいましたが、RINEARNでは先月(8月)中旬に、リニアングラフ3DやVCSSLなど、各ソフトウェアの最新版をリリースしました。主な更新内容をリストアップしてお知らせいたします。

新年のご挨拶
2020年01月14日 - 遅ればせながら、新年のご挨拶を申し上げます。本年もRINEARNをどうぞよろしくお願い申し上げます。

新着
Vnano版 | ローレンツ方程式を数値的に解くプログラム

ローレンツ方程式を4次ルンゲ=クッタ法によって解き、グラフ描画用のデータを出力するプログラムです。
2021年02月12日
Vnano版 | 積分値のグラフ描画用データを出力するプログラム

数値的に積分を行い、結果の関数をグラフに描くためのデータを出力するコードです。
2020年12月20日
Vnano版 | 積分値を求めるプログラム (数値積分)

矩形法/台形法/シンプソン法を用いて、積分の値を数値的に求めるコードです。
2020年12月20日
3Dグラフを回転アニメーションさせるツール

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

「VCSSL GUI開発ガイド」内のサンプルコードです。ユーザーがGUIを操作した際に行う処理を実装します。
2019年07月28日
開発元Twitterアカウント