私はグラフappを書いており、visibility problemを処理するには、z-bufferまたはpainters algorithmのいずれかを使用することをお勧めしています。ペインターのアルゴリズムを実装するときにポリゴンを注文する正しい方法は何ですか?
私はHTML5のキャンバスにこれを書いていますので、zバッファを使用するのはひどく高価です。たとえば、500×500のキャンバスで、10個のポリゴンをループする必要があります。これは、CPUで1フレームあたり2,500,000回の繰り返しが行われることになります。私はそれが大きな数字であるかどうかわからないが、それはこのアプリのためにそれを行う間違った方法のように思える。
ペインターのアルゴリズムが適切であるようです。基本的な手順は次のとおりです。
1. Sort polygons based on their "z".
2. Paint all polygons, but paint the ones farthest away first.
しかし、私はそれらのzを見つける方法について混乱しています。
私がちょうど最大のz(画面から最も遠い)を見つけたら、もっと遠くにあると考えられます。それで赤が最初にペイントされ、次に赤がオレンジの前にあっても、赤がオレンジで塗り潰されます。
これらのポリゴンをソートする正しい方法は何ですか?または、より一般的には、ペインタのアルゴリズムを実装するときに、ポリゴンの順序をどのように決定するのですか?
編集:thisは(各ピクセルを通過すると、ランダムにこの5歳のi7の上に色〜10FPSを割り当てます)私自身のzバッファを転がすの理由イム恐れています。
複雑さは同じです。 3つの三角形をソートし、2.5Mの2Dピクセル操作を使用して盲目的に描画するか、1つのピクセルにつき1つのz演算を追加するzバッファを使用します。 CGアルゴリズムが、ある三角形が他の三角形で完全に隠されていると判断した場合にのみ、メリットが得られます。 –