2

C++ と GLSL を使用して OpenGL でやりたいこと: テクスチャにアルファ (texture.a! = 1.0;) がある場合、このピクセルは深度バッファに書き込まれません。(カラー バッファの場合は書き込まれます) 書き込み深度は、ピクセル texture.a == 1.0; の場合にのみ発生します。

シェーダーで破棄することは解決策ではありません。この場合、このピクセルはカラー バッファーに書き込まれません。

何か案は?

@UPDATE: 例: OpenGL でレンダリングされた UI 画像がいくつかあります。それらのいくつかは、コーナーにアルファがあります。シーンのレンダリングでは、ライトを計算しないことで一部のピクセルを保存する「深度プリパス」があります。そのプリパスに UI 画像も取得したいのですが、完全に不透明なピクセル (アルファ = 1.0) のみです。

4

1 に答える 1

0

Andonのコメントで言及されているように、「フラグメントを書き込むときは常に深度値を書き込む必要があります。シェーダー レベルでこれを選択的に有効または無効にする方法はありません。」

于 2016-04-13T21:47:19.643 に答える