Chapter5. 解説


5.1 画面の構成

 ここでは、LGP の画面構成について説明を行う。
ダブルバッファリング
 LGP では内部に 2枚のバッファを用意しており、描画を行う側と画面に表示する側と交互に切り替えている。交互に切り替える理由はただ一つ、見栄えである。
 例えば 1枚のバッファしかない場合、描画している最中の作業をユーザーに見せる事になるり、非常にみっともない状況となる。そこで2枚のバッファを用意し、1枚目のバッファを表示して最中はもう一方のバッファに描画を行う。そして描画が終わったら描画を行う側と画面に表示する側を入れ替える。こうすれば描画が完成した時点で画面が高速に切り替え、みっともないという問題が避けられるのである。この技術を「ダブルバッファリング技法」という。
 
フロント・バッファとバック・バッファ
 ダブルバッファリングに於いて、画面に表示されている側のバッファを「フロント・バッファ」(前面)、描画する側を「バック・バッファ」(後面)と呼び区別する。
【注意】
 フル画面表示時とウインドウ画面表示時とでは、バックバッファの内容が異なります。
 フル画面表示では、ビデオボードで論理的にフロントバッファとバックバッファの切り替えを行う為、切り替え後のバックバッファには切り替え前に表示されていた画像が残っています。
 一方、ウインドウ画面表示では、切り替え時にバックバッファの内容をフロントバッファにコピーを行っている為、切り替え後のバックバッファには切り替え前と同じ画像が残っています。
 
サーフェス
 画面表示や描画に使うバッファの事を LGP では「サーフェス」(面)と呼ぶ。
 DirectX の用語で使われている「サーフェス」は、LGP では「キャラクタ」と呼ぶ。
【サーフェスの構造】
 サーフェスの構造は、ビットマップ画像と同じと考えて良い。つまり、Windows 標準のアプリケーションであるペイントブラシで編集を行うのと同じであると考えて欲しい。
 ペイントブラシで編集している画面を拡大するとよく解るが、縦横に均等に並んだ…方眼紙を想像して下さい。
 点に色を付ける事で画像を構成する。横を X座標軸(左端=0)、縦を Y座標軸(上端=0)とし、それぞれ右、下に向かってプラス方向に座標が増加となる。
 例えば「横640×縦480」の画像であれば、次のようになる。
 
プライマリ・サーフェス
 描画を行うバッファ(サーフェス)をプライマリ・サーフェス(優先の面)と呼ぶ。
 プライマリ・サーフェスは G@SETUP 関数の実行で生成され、G@FLIP 関数で描画を行う側と画面に表示する側を切り替える。
 
セカンダリ・サーフェス
 画面の編集の為に、ファイルから画像データを読み込む事がある。ファイルから読み込んだ画像はサーフェスとして内部に保持される。この時のサーフェスを「セカンダリ・サーフェス」(第2の面)と呼ぶ。
【読み込み以外のセカンダリ・サーフェス】  前述のセカンダリ・サーフェスは、画像の読み込み以外に、作業用のワークとして生成する事も出来る。
 
画面の編集
 一般的には画像処理はセカンダリ・サーフェスの画像をプライマリ・サーフェス(バックバッファ)にコピーして、表示するイメージの画面を構成して行きます。
 その他、セカンダリ・サーフェスから別のセカンダリサーフェスへのコピーや、プライマリ・サーフェスからセカンダリ・サーフェスへのコピーなど、自由に画像編集を行えます。
 
サーフェスの識別
 サーフェス間でコピーを行う…と述べたが、サーフェスが複数ある場合にはサーフェス毎に固有に付けられたサーフェス番号で編集対象のサーフェスを特定する。
 サーフェス番号は G@SETUP 関数/ G@CHRLOAD 関数/ G@CHRMAKE 関数等で取得される。