1

そのため、シーングラフと半透明オブジェクトに関する次の問題に悩まされています...私の問題は、1 つのシーンで複数の半透明オブジェクトをレンダリングしたいということです。最初に不透明なオブジェクトをレンダリングし、次に半透明のオブジェクトを後ろから前にレンダリングする必要があることはわかっています。それはうまくいっています...多かれ少なかれ...

しかし、実際の問題は、たとえば、白 (または他の色) で、アルファ値が 0.5 の半透明の立方体が 1 つあることです。立方体の内部構造は波面 obj ファイルで指定されるため、立方体の単一平面の順序が指定されます。1000 個を超えるオブジェクトと各オブジェクトの頂点が 1000 個を超えるシーンでは多すぎるため、オブジェクトの単一の平面を並べ替えません。そのため、オブジェクト全体のみを並べ替えます。オブジェクトの単一の平面をレンダリングして動き回ると、別の平面よりも近い平面が他の平面よりも先にレンダリングされる瞬間が来ます。そして、深度バッファがこれを許可していないため、2 番目のものはレンダリングされていません。これはレンダリングのエラーです。

深度バッファをシャットダウンすることは解決策ではありません。半透明で不透明な複雑なオブジェクトが存在する可能性があるため、必要です。

オブジェクトが複雑で不透明で半透明であっても、オブジェクトが正しい方法でレンダリングされることをどのように達成できるかについてのヒントはありますか?

4

1 に答える 1

3

基本的に、次のことを行う必要があります。

  • すべてを不透明と半透明に分けます (1 つのオブジェクトが両方で構成されている場合は、引き裂く必要があります)。

  • 深度バッファをクリア

  • Depth Test を有効にして、すべてを不透明に描画します。

  • 深度バッファを読み取り専用にする: glDepthMask(GL_FALSE)

  • 半透明のすべてを後ろから前に描きます。

これでうまくいくはずです。

于 2013-04-05T11:09:24.050 に答える