[ 前へ | 目次 | 次へ ]

ラスタ制御描画

この章では、最も直接的な描画方法であるラスタ制御描画について扱います。


ラスタ制御描画

ラスタ制御描画の仕組み

これまで扱ってきた直接描画やスプライト描画は、レンダラーに用意されたペイントツール的な機能を用いて、 図形などを描き込んでいく方式でした。それに対してラスタ制御描画は、 そのような高度な機能は使用せず、グラフィックスデータの保持するピクセル情報である 「 ラスターデータ 」を直接的に操作する事により、描画を行う方式です。

ラスタデータ

ラスタデータとは、グラフィックスデータ上の全てのピクセルにおける色情報を表すデータです。 色情報には赤(Red)、緑(Green)、青(Blue)、透明度(Alpha)の4 つの要素がありますが、 VCSSL ではこれらをそのまま4 つの独立なラスターデータとして扱います。

VCSSL では、ラスターデータを [ 高さ ] × [ 幅 ] の2 次元配列として扱います。 配列のインデックスは[ 行 ][ 列 ]となり、 行は上から、列は左から数えます。配列の型はint 型で、 そのピクセルにおける色の強度を 0 〜 255 の範囲で保持します。

少し具体的な話をすると、青色成分のラスターデータをblue[ ][ ]として、 blue[ 0 ][ 0 ]は、グラフィックスデータの左上端のピクセルにおける、 青色の強度を表します。同様にblue[ 10 ][ 100 ]は、グラフィックスデータの上から10 個目、 左から100 個目のピクセルにおける、青色の強度を表します。

ラスターデータの描画

任意のラスターデータの内容を描画するには、レンダラーのsetPixel 関数を使用します。

- 関数仕様 -
void setPixel (
  int rendererID,
  int red[ ][ ], int green[ ][ ], int blue[ ][ ], int alpha[ ][ ]
)

最初の引数rendererID でレンダラーのID を指定します。 続く引数red、green、blue、alpha でラスターデータを指定します。

ラスターデータ配列のインデックスは[ 行 ][ 列 ]でピクセル位置を指定し、 値はその位置のピクセルにおける色強度(0〜255)を表します。

この関数をコールすると、受け取ったラスターデータの内容に基づいて、 レンダラーがグラフィックスデータへの描画を行います。

なお、以下のように、一つの配列で全色成分をまとめて指定する事もできます。

- 関数仕様 -
void setPixel ( int rendererID, int color[ ][ ][ ] )

この場合は、color に各ピクセルの色を格納して渡します。 配列のインデックスは[ 行 ][ 列 ][ 色成分の番号 ] で、 色成分の番号は 赤=0, 緑=1, 青=2, α=3 です。

ラスターデータの取得

現在レンダラーが保持しているグラフィックスデータの内容から、 各色成分のラスターデータを取得するには、色に応じて以下の4 つの関数を使用します。

- 関数仕様 -
int[ ][ ] getPixelRed ( int rendererID )
int[ ][ ] getPixelGreen ( int rendererID )
int[ ][ ] getPixelBlue ( int rendererID )
int[ ][ ] getPixelAlpha ( int rendererID )

引数rendererID にはレンダラーのID を指定します。これらの関数は上から順に、 それぞれ赤(Red)、緑(Green)、青(Blue)、透明度(Alpha)成分のラスターデータを、 int 型の2 次元配列で返します。配列のインデックスは[ 行 ][ 列 ]となり、行は上から、列は左から数えます。

なお、既存の画像ファイルの内容からラスターデータを取得するには、 まずレンダラーのdrawGraphics 関数などで画像ファイルの内容を描き込んでから、 そのレンダラーに対して上のgetPixel〜関数を使用します。

プログラム例

実際に簡単な模様のラスターデータを作成し、描画を行って見ましょう。 以下のように記述し、実行してみてください。

このプログラムを実行すると、白いウィンドウが表示され、その上にカラフルな長方形が重なって表示されます。

実行結果
カラフルな長方形が重なって表示されます。


この階層の目次
お知らせ

リニアングラフ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アカウント