言語はC++です。
イメージとしては2D時代のゼルダの伝説を想像してください。
■ ・・・上半身
■ ・・・下半身
という一つのキャラ(Aとする)と
● ・・・上半身
● ・・・下半身
という一つのキャラ(Bとする)がいたとします。
プログラムがB表示→A表示の順だとすると
AがBよりY座標的に上かつ重なってるときは下図のように問題はないのですが、
●
● ←■
←■
●
■
■
AがBよりY座標的に下かつ重なってるときは
手前にいるBの上半身がAの下半身に重なって隠れ、下図のようにおかしくなってしまいます。
■
■ ←●
←●
■
■
●
例のように二体のキャラなら座標の比較で簡単に処理できますが
複数いるとどのように処理したらいいのかわかりません。
どなたか知恵をお貸しください。
グラフィックの重なりの処理について
Re: グラフィックの重なりの処理について
「手前にいる」の定義がよくわからないですが、
全てのキャラの下半身を描画→全てのキャラの上半身を描画 ではダメですか?
もしくは、「Zバッファ」を使用するべき状況かもしれません。
全てのキャラの下半身を描画→全てのキャラの上半身を描画 ではダメですか?
もしくは、「Zバッファ」を使用するべき状況かもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: グラフィックの重なりの処理について
下半身の座標で普通は描画順をソートします。下半身と上半身は同時描画です。
【補足】
ちなみにファミコンとかはハード制約で仕方なく上半身と下半身に分かれていましたが、PCなら別に分ける必然はないです。
【補足】
ちなみにファミコンとかはハード制約で仕方なく上半身と下半身に分かれていましたが、PCなら別に分ける必然はないです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
nanashi
Re: グラフィックの重なりの処理について
みけCATさんの下半身と上半身を分けて描画する案もいいと思いましたがsoftya(ソフト屋) さんが書きました:下半身の座標で普通は描画順をソートします。下半身と上半身は同時描画です。
やはり座標で描画順に並び替えるのがよろしいですか。
大変参考になりました。ありがとうございます。
Re: グラフィックの重なりの処理について
ソートしないで下半身と上半身を分けて描画するだけでは胴体切断が発生しますよ。nanashi さんが書きました:みけCATさんの下半身と上半身を分けて描画する案もいいと思いましたが
やはり座標で描画順に並び替えるのがよろしいですか。
Zバッファを使う場合でもZソートが必要な場面は多いので覚えておくべきかと思います。