グラフィックの重なりの処理について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
nanashi

グラフィックの重なりの処理について

#1

投稿記事 by nanashi » 12年前

言語はC++です。
イメージとしては2D時代のゼルダの伝説を想像してください。

■ ・・・上半身
■ ・・・下半身
という一つのキャラ(Aとする)と
● ・・・上半身
● ・・・下半身
という一つのキャラ(Bとする)がいたとします。

プログラムがB表示→A表示の順だとすると
AがBよりY座標的に上かつ重なってるときは下図のように問題はないのですが、
 ●
 ●  ←■
    ←■
 
 ●
 ■
 ■

AがBよりY座標的に下かつ重なってるときは
手前にいるBの上半身がAの下半身に重なって隠れ、下図のようにおかしくなってしまいます。
 ■
 ■  ←●
    ←●

 ■
 ■
 ●

例のように二体のキャラなら座標の比較で簡単に処理できますが
複数いるとどのように処理したらいいのかわかりません。
どなたか知恵をお貸しください。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: グラフィックの重なりの処理について

#2

投稿記事 by みけCAT » 12年前

「手前にいる」の定義がよくわからないですが、
全てのキャラの下半身を描画→全てのキャラの上半身を描画 ではダメですか?
もしくは、「Zバッファ」を使用するべき状況かもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: グラフィックの重なりの処理について

#3

投稿記事 by softya(ソフト屋) » 12年前

下半身の座標で普通は描画順をソートします。下半身と上半身は同時描画です。

【補足】
ちなみにファミコンとかはハード制約で仕方なく上半身と下半身に分かれていましたが、PCなら別に分ける必然はないです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

nanashi

Re: グラフィックの重なりの処理について

#4

投稿記事 by nanashi » 12年前

softya(ソフト屋) さんが書きました:下半身の座標で普通は描画順をソートします。下半身と上半身は同時描画です。
みけCATさんの下半身と上半身を分けて描画する案もいいと思いましたが
やはり座標で描画順に並び替えるのがよろしいですか。

大変参考になりました。ありがとうございます。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: グラフィックの重なりの処理について

#5

投稿記事 by ISLe » 12年前

nanashi さんが書きました:みけCATさんの下半身と上半身を分けて描画する案もいいと思いましたが
やはり座標で描画順に並び替えるのがよろしいですか。
ソートしないで下半身と上半身を分けて描画するだけでは胴体切断が発生しますよ。

Zバッファを使う場合でもZソートが必要な場面は多いので覚えておくべきかと思います。

閉鎖

“C言語何でも質問掲示板” へ戻る