[ 前へ | 目次 | 次へ ]
Japanese English

フレームワークの使用

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

スポンサーリンク


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

これまでは、レンダラーやグラフィックスデータ、および表示画面を生成したり、画面の 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 が入っています。

なお、上記の関数を全て定義する必要はありません。使うものだけを定義し、処理を記述してください。 以下に、よく使う関数の使用例を挙げておきましょう:

onStart / onExit 関数

onStart 関数には、画像ファイルの読み込みなど、プログラムの最初に 1 度だけ行えばよい処理を記述します。

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

onPaint / onUpdate 関数

onPaint関数は、毎秒数十回(負荷にもよりますが、大体 1 秒間に 30 回ほど)の頻度で繰り返し実行され続けます。この中に、画面の描画処理を記述します。

onUpdate 関数は、onPaint関数と交互に実行されます。アニメーション描画を行いたい場合は、この onUpdate 関数の中に、描画位置などの変数の値を少しずつ変化させるような処理を記述するとよいでしょう。その変化情報に基づいて、onPaint 関数内で少し変化した内容を描画するようにすればOKです。

別に、上記どちらかの関数の中で、描画も位置更新もまとめて実装してしまっても、処理上は問題ありません。しかし、絵を描く処理(onPaint)と更新処理(onUpdate)を分けて実装した方が、メンテナンス時に内容を把握しやすいコードになります。

プログラム例

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


import Graphics2D;
import graphics2d.Graphics2DFramework;

// 描画処理を記述する関数
// ( 画面更新周期ごとに、毎秒数十回呼び出される )
void onPaint ( int rendererID ) {
	
	// 背景色をグレーに設定
	setGraphics2DColor( rendererID, 200, 200, 200, 255 );

	// 描画色を青色に設定
	setDrawColor( rendererID, 0, 0, 255, 255 );

	// 点を描画
	drawPoint( rendererID, 100, 100, 20, true );
}
Framework.vcssl

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

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

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


import Graphics2D;
import graphics2d.Graphics2DFramework;

// 点の描画位置を格納する変数
int x = 0;
int y = 0;

// 描画処理を記述する関数
// ( 画面更新周期ごとに、毎秒数十回呼び出される )
void onPaint ( int rendererID ) {

	// 背景色をグレーに設定
	setGraphics2DColor( rendererID, 200, 200, 200, 255 );

	// 描画色を青色に設定
	setDrawColor( rendererID, 0, 0, 255, 255 );

	// 点を描画
	drawPoint( rendererID, x, y, 20, true );
}

// 更新処理を記述する関数
// ( 画面更新周期ごとに、毎秒数十回呼び出される )
void onUpdate ( int rendererID ) {

	// 点の描画位置を少しずつ変化させる
	x += 2;
	y += 1;
}
FrameworkAnimation.vcssl

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

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



スポンサーリンク



Japanese English
この階層の目次
RINEARN からのお知らせ
※ VCSSL は RINEARN が開発しています。

各ソフトやVCSSLの英語版ドキュメント整備がほぼ完了
2025-06-30 - RINEARNでは2年前から、AIの補助による英語版ドキュメントの大幅拡充計画を進めてきました。今回、主要ドキュメント&コンテンツの英訳がほぼ完了し、一応の目標水準に達しました。詳細をお知らせします。

VCSSLの最新版をリリース: 外部プログラムとの連携機能を少し強化、他
2025-05-25 - VCSSL 3.4.52をリリースしました。外部プログラム(C言語製の実行ファイル等)との連携機能を少し強化し、文字化け対策やOS判別などを可能にしました。他にも細かい機能追加があります。詳細をお知らせします。

VCSSLの最新版をリリース、Java 24上での非互換な挙動を対処
2025-04-22 - VCSSL 3.4.50をリリースしました。Java 24環境上でのネットワークドライブ関連のファイルパス解決で、従来環境とは異なる挙動が生じていたのを解消しました。詳細をお知らせします。

リニアングラフやVCSSLの最新版をリリース、目盛りの位置や内容を自由に指定可能に!
2024-11-24 - リニアングラフ3D/2Dを更新し、自由な位置に、自由な表記内容の目盛りを描けるようになりました! 併せて、Java言語やVCSSLでの、プログラム制御用APIも拡張しています。詳細をお知らせします。

Exevalator 2.2 をリリース、TypeScript 対応によりWebブラウザ上で動作可能に
2024-10-22 - オープンソースの式計算ライブラリ「Exevalator(エグゼバレータ)」の2.1をリリースしました。新たに TypeScript に対応し、Webブラウザ上での式計算にも使えるようになりました。詳細を解説します。

アシスタントAI作成の舞台裏(その2、作成編)
2024-10-12 - アシスタントAIの作成方法解説の後編です。実際にChatGPTの「GPTs」機能を用いて、アシスタントAIを作成する手順や、独自の知識をもたせたり、精度を出すためのノウハウなどを解説しています。

アシスタントAI作成の舞台裏(その1、基礎知識編)
2024-10-07 - アシスタントAI作成方法解説の前編です。今回はまず、アシスタントAIを作る前に抑えておきたい、基礎知識を延々と解説しています。そもそもLLM型AIとはどんな存在か? RAGとは何か? 等々です。

ソフトの利用をサポートしてくれるアシスタントAIを提供開始!
2024-09-20 - RINEARN製ソフトの使い方の質問応答や、一部作業のお手伝いをしてくれる、アシスタントAIを提供開始しました。ChatGPTアカウントさえあれば、誰でも無料で使用できます。使い方を解説します。

Exevalator 2.1 をリリース、新たに Visual Basic に対応
2024-07-28 - オープンソースの式計算ライブラリ「Exevalator(エグゼバレータ)」の2.1をリリースしました。今回から、新たに Visual Basic(VB.NET)でも使用できるようになりました。詳細を解説します。

関数電卓 RINPn(りんぷん)、Esc キーで計算式の一発クリアが可能に
2024-07-20 - 関数電 RINPn の Ver.1.0.2 をリリースしました。今回から、キーボードの「 Esc 」キーを押すと、入力中の計算式を一発でクリアできるようになりました。詳細を解説します。