[ 前へ | 目次 | 次へ ]

ラスタ制御描画

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


ラスタ制御描画

ラスタ制御描画の仕組み

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

ラスタデータ

ラスタデータとは、グラフィックスデータ上の全てのピクセルにおける色情報を表すデータです。 色情報には赤(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〜関数を使用します。

プログラム例

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

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

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



スポンサーリンク



スポンサーリンク

この階層の目次
お知らせ

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

次回のVCSSL 3.4.10において、関数1個の挙動に非互換な修正が適用されます
2019年02月12日 - VCSSLの次回の正式リリース版3.4.10において、これまでドキュメントと実際の挙動が異なっていた描画系の関数1個に、非互換な修正が適用されます。その詳細と、使用コードでの対応方法について解説します。

RINEARNのソフトウェア向けにOpenJDKで生成したJava実行環境(JRE)の提供を開始
2019年02月06日 - Javaのリリースモデル変更への対応として、OpenJDKのjlinkツールを用いて、RINEARNのソフトウェア実行用に生成したJava実行環境(JRE)の提供を開始しました。その詳細と、今後の方針について解説します。

新着
画像の矩形(四角形)領域を切り抜く簡易ツール(複数ファイル一括処理版)

フォルダ内にある全ての画像ファイルを開き、その中の矩形(四角形)領域を切り抜いて、別のフォルダに保存する簡易ツールです。
2019年03月15日
画像の矩形(四角形)領域を切り抜く簡易ツール

画像ファイルを開き、その中の矩形(四角形)領域を切り抜いて保存する簡易ツールです。
2019年03月14日
入力された数式を積分して値とグラフを表示するツール

画面上で数式を入力すると、それを数値的に積分し、値とグラフを表示してくれるGUIツールです。
2019年01月20日
z = f(x,y,t) の形の数式を3Dグラフとしてアニメーション描画するツール

入力欄に z = f(x,y,t) の形の数式を入力すると、それを3次元のグラフにアニメーション描画してくれる簡易ツールです。
2018年11月26日
y = f(x,t) の形の数式を2Dグラフとしてアニメーション描画するツール

入力欄に y = f(x,t) の形の数式を入力すると、それを2次元のグラフにアニメーション描画してくれる簡易ツールです。
2018年11月25日
開発元Twitterアカウント

スポンサーリンク