複数の関数をまたぐデプスステートの設定
Hiragi(GKUTH)  2016/06/07(Tue) 19:48
いつも使用させてもらっております。
現在弾幕STGを製作しております。描画順序を
Graphics2D::SetZにて設定し、管理しようとしています。
グローバルな定数として

//描画順序定義 上ほど背面に描画される
enum
{
DEP_BACK,
DEP_ENEMY_SHOT,
DEP_ENEMY,
DEP_PLAYER_SHOT,
DEP_PLAYER,
DEP_BOARD,
DEP_SCORE,
DEP_MENU,
};

と言うような宣言をし、各々のクラスの描画関数内で、Graphics2D::SetZに上記の値を渡して
描画順序を設定しようとしていますが、見た目上変化がありません。 加えて関数内で順序を入れ替えても(SetZに渡す値を入れ替えても)見た目に変化がありません。
どのような原因、または改善策があるのでしょうか、よろしくお願い致します。

例として敵画像および弾の描画関数を貼っておきます

void Enemy::Draw()
{
//弾描画
Graphics2D::SetZ(DEP_ENEMY_SHOT);
for (std::list<shot_t>::iterator blItr = Bullet.begin();blItr != Bullet.end();)
{
ShotImg.drawAt(blItr->Pos);
++blItr;
}
//キルフラグが立っていなければ描画
Graphics2D::SetZ(DEP_ENEMY);
if(!killflag)
{
EnemyImg(EnemyRect.beginX, EnemyRect.beginY, EnemyRect.sizedivX, EnemyRect.sizedivY).drawAt(Pos.x - 1, Pos.y);
}
}
記事編集
Reputeless  2016/06/08(Wed) 00:56
SetZ はこれから描画するオブジェクトの Z 値を指定するものです。

デプスの書き込みとテストを有効にするには
Graphics2D::SetDepthState(DepthState::TestWrite);
が必要です。

ただし、Z 値を使った描画順指定は透過と相性が悪いので、投稿のような目的には適さないと思われます。
編集
Hiragi(GKUTH)  2016/06/08(Wed) 18:36
Graphics2D::SetDepthState(DepthState::TestWrite);
を有効にすると、自機が表示されなくなりました、ボード画像を透過にしているためでしょう、
今回のケースに関しては相性が悪いようです。ほかの方法を考えることにしました。
迅速な対応ありがとうございました。
編集
件名
Re: 複数の関数をまたぐデプスステートの設定
名前
コメント
画像添付


投稿修正キー (投稿を修正する時に使います)
画像認証 (右画像の数字を入力) 投稿キー

- WEB PATIO -