私はOpenGLを初めて使用し、ブラシストロークでテクスチャを消去して、ブラシストロークのアルファ値を調整することにより、openglビューの背景を表示する消しゴムブラシを実装しようとしています。OpenGLビューのopaqueプロパティはNOに設定されています。
私はAppleのGLPaintを出発点として使用しています。私が使用しているブラシは、中心がアルファゼロで、サーキュラーのエッジでアルファが1に放射状にフェードするテクスチャです。
glColorMask(0,0,0,1)
私はアルファチャンネルでのみ描画するために使用します。
ここで、問題はブレンド機能にあります。私が使うglBlendFunc(GL_DST_ALPHA, GL_SRC_ALPHA)
と、それは一種の働きをしますが、私が期待したようにはなりません。
結果のアルファを、宛先アルファ(すでに画面に表示されているアルファ)とブラシのアルファの最小値にします。
ブレンド機能は、次のglBlendFunc(GL_DST_ALPHA, GL_SRC_ALPHA)
ような場合には機能しません...
画面(宛先)のアルファが0.5であるとします。ブラシのエッジ(ブラシのアルファが1)がこのピクセルに接触すると、結果のピクセルのアルファは0.5(最小値は1と0.5)のままになります。ただし、上記のブレンド関数を使用すると、(1 * 0.5 + 1 * 1)になり、再び不透明になります。
スムーズな消去ブラシを取得するには、どのブレンドオプションを使用しますか?それを解決するために私が取ることができる他のアプローチはありますか?