描画順を管理する描画システムを妄想してみる。
以下完全にチラシの裏。
まず、ゲーム中で用いられる。地形やキャラクター、FPS表示、スコア表示などはすべてCGameObjectとかから派生させておいて、毎フレーム呼ばれるCGameObject::update()あたりから
mGameFrame->queueDraw( 0x0001 ); // プライオリティを指定して描画コマンドをキュー
と描画コマンドをキューしておく。プライオリティの値は小さいほど優先して描画される。当然、半透明ポリゴンや文字の表示などは描画フェーズの最後に回す必要があるのでプライオリティの値を高く設定しておく。
それで、システム側では秒間フレーム数を調整して(場合によってはフレームをスキップして)、キューに登録された描画コマンドを実行する。キューの管理は
bool operator<(const CGameObject*& x, const CGameObject*& y) { return x->priority < y->priority; } priority_queue<CGameObject*> drawQueue;
みたいな感じか。
でもこうすると半透明オブジェクトのZソートをどうしたらいいもんか悩む。熱で頭がぼーっとするのでここまでにしとこう。
バキ
達人が・・・(´・ω・`)ショボーン