0

OpenGL では、どちらがより良いパフォーマンスをもたらすでしょうか。カリングされた面を変更するには、またはオブジェクトを回転するには?

シナリオは次のとおりです。

シェーダーにフィードするマトリックスを計算します。これにより、特定のカリング位置 (前面) にテクスチャ A が描画されます。オブジェクトを前から見ると見えますが、後ろからは見えません。これが私の望ましい動作です。ここで、後ろに「何か」を追加したいと思います。テクスチャ B としましょう。これにより、オブジェクトを後ろから見たときに、この他のテクスチャがテクスチャ A と同じ位置と向きで表示されますが、テクスチャ B が表示されます。

私は、2 つの側面を持つ立方体を構築する以外に、以前のオブジェクトの「上に再描画」することができると考えました。オブジェクトを回転させる場合、OpenGL はフェース カリング テストに合格しないため、テクスチャ A を単純に上書きしないと想定できると思います。これには、mi オブジェクトを独自の軸でミラーリングするために、追加の行列乗算が 1 つ必要です。しかし、単にカリング プロパティを変更して描画しようとするとどうなるでしょうか。テキストを前から失敗させ、後ろから渡すのと同じ効果があるのではないでしょうか?

これら2つのオプションのどちらが優れていますか?

(PD: 私はこれを iPhone で行っているので、すべてのパフォーマンスが古いデバイスに関連しています。)

ありがとうございました。

4

1 に答える 1

0

正しく理解できたかどうかわかりませんが、ここに看板を描こうとしているようですね? その場合、背面カリングを完全に無効にし、フラグメント シェーダー チェックで無効にする必要がありますgl_FrontFacing。これに応じて、テクスチャ座標を反転してテクスチャを変更できます (両方のテクスチャをバインドしてシェーダに送信するだけです)。この方法では、描画呼び出しは 1 つだけで、変なトリックを行ったり、OpenGL の状態を変更したりする必要はありません。

于 2013-04-25T00:23:52.583 に答える