1

遅延レンダリング パイプラインを使用した科学的な視覚化用の小さな OpenGL アプリがあります。2 つのパスがあります。位置、法線、アルベド、セグメンテーションなどでテクスチャをレンダリングするジオメトリック パスです。ライティング パスでは、そのデータの一部をクワッドにマップして画面にレンダリングするか、ハード ドライブに画像を保存するだけです。つまり、古典的な遅延レンダリングです。

ここで、ワイヤフレーム レンダリングを追加のテクスチャに追加する必要があります。ジオメトリ シェーダーでやろうと思ったのですが、ちょっと複雑そうでパフォーマンスも問題なかったので、3 番目のパスを設定glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);してテクスチャにレンダリングし、それをライティング パスに渡します。他のもの。

問題なく動作しますが、何らかの方法で深度バッファを使用し、モデルの背後にあるワイヤフレームをレンダリングしないようにすることは可能でしょうか? つまり、確かに背面ポリゴンをカリングできますが、正面ポリゴンの背後にもまだいくつかの線があり、これも前面です。私が望むのは、ポリゴンが塗りつぶされているかのようにカリングすることですが、ワイヤーフレームのみをレンダリングすることです。

glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);モデルをレンダリングしてからワイヤーフレームをレンダリングすることもできますが、モデルをジオメトリ パスのテクスチャにレンダリングし、別のパスのワイヤーフレームにモデルをレンダリングするため、これを行うことglPolygonMode(GL_FRONT_AND_BACK, GL_LINE);はできません。デフォルトの深度バッファ。

それで、皆さん、何か考えはありますか?

4

1 に答える 1

1

さて、私は問題を解決しました。ソリッド ワイヤフレーム レンダリングを@httpdigest提案どおりに実装する前に、両方のパスから深度バッファを保存し、深度がワイヤフレームの深度よりも小さい場合はワイヤフレームでモデルをレンダリングしようとしました。それは私が必要としていたものでした。

ここに画像の説明を入力

しかし、ジオメトリ シェーダーを使用したアプローチは、はるかに高速でメモリ消費量が少ないに違いないとほぼ確信しています。繰り返しますが、私は 60fps のゲームを開発しているわけではないので...

于 2018-10-31T14:34:15.547 に答える