Google

2007年9月6日木曜日

PopClock作成の軌跡~その6

その6は・・・描画処理のお話。
といっても描画処理発行前段階の処理といったとこでしょか。

BitBltとかの描画処理は発行した順に書いていくわけでして、絵が重なった時は当然後に発行した絵のほうが手前に描かれるわけです。
んで、実際描画を行うのに毎フレーム結構な数の描画を行う事になった場合、BitBltをソースの中にいちいちペタペタ順番考えながら書き込んでいく・・・ってのは毎フレーム何が書かれるか定まっていない場合はちょいと現実的ではないわけでして、
どうするかというと、描画関数発行する数だけリストを作っていき、フレーム処理の最後にリストを順にたどって描画していく、てのを作ります。

リストデータ要素を構造体で定義して、構造体データに優先順位値を含めて、データ作成する時優先順位値をみながらリストの場所を決定して、って事をすれば書きたい順番に描画処理が発行できる、という感じです。
たとえばこんな感じ。
typedef struct {
bool enable; // 有効データならtrue
GRA_PRM gra_prm; // 描画パラメータ
int pri; // 描画優先順位
int next; // 次のindex番号
int back; // 前のindex番号
} GRA_LST;
GRA_LST gra_lst[GRA_MAX]; // 描画パラメータリスト

リストデータを配列で用意してるからこんな感じっす。
リストデータを登録する関数作って、リストを回してBitBltとか発行する関数作って・・・

てなわけで、描画順番を考慮した描画処理の作成のお話でした。

0 件のコメント: