2016-06-17 2 views
1

私のグラフィックオブジェクトの透明度を有効にしたい。私は、アルファを0と1の間の値に設定するだけでは不十分であることを知りました。の呼び出しの前にGdx.gl.glEnable(GL20.GL_BLEND)を呼び出す必要があります。shapeRenderer.end()のレンダーコールglDisable(GL20.GL_BLEND)を呼び出してください。しかし、私の質問は、レンダリングではなく、このメソッドGdx.gl.glEnable(GL20.GL_BLEND)をcreateメソッドで呼び出すことができ、それをゲームランタイムで有効にすることですか?私は一度それを無効にしようとしましたが、私はエラーやパフォーマンスの問題に直面していません。では、ユースケースは何ですか?また、このglDisable(GL20.GL_BLEND)を使用する必要がありますか、またはGL関数を呼び出さずにシェイプにアルファを設定する別の方法がありますか?作成時にGL_BLENDを一度呼び出すといいですか?

答えて

1

OpenGLでのブレンドは、オーダーとは無関係ではありません。また、凸でないオブジェクトではうまく動作しません。そのため、一般的には、GPUにオブジェクトを投げつけてブレンドするだけではありません。

また、ブレンディングを有効にすると、パフォーマンスコストが発生します。通常、モバイルハードウェアはデスクトップよりも多くありますが、デスクトップハードウェアであってもまったく無料ではありません。

したがって、一般的な規則は、すべての不透明なサーフェスを最初にレンダリングし、透明なものを背面から前面にソートし、次に透明なものをその順序でレンダリングすることです。また、ブレンドされたレンダリングを行うときは、奥行きの書き込みをオフにする必要があります。深さテストはまだ必要ですが、書き込みによって問題が発生します。

+0

よろしくお願いします。 – Kapparino

関連する問題