OpenGL テクスチャ マスキングについて助けが必要です。私はそれを機能させていますが、他の方法で機能させるために他のブレンディング関数パラメーターを見つける必要があります。今私が持っています:
//Background
...code...
glBlendFunc(GL_ONE, GL_ZERO);
...code
//Mask
...code...
glBlendFuncSeparate(GL_ZERO, GL_ONE, GL_DST_COLOR, GL_ZERO);
...code...
//Foreground
...code
glBlendFunc(GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA);
...code
マスクが透明な場合、前景の不透明度を 0 (背景テクスチャで塗りつぶす) に設定します。マスクの色に反応する必要があります。マスクの色に応じて前景の不透明度を設定するようなものです。たとえば、マスクが黒 (0.0,0.0,0.0) の場合、前景のその場所の不透明度は 0 (背景で塗りつぶされます) であり、マスクが白 (1.0,1.0,1.0) の場合、前景の不透明度は 1 (背景で塗りつぶされていません)。逆の結果になることもあります (白 = 不透明度 0、黒 = 不透明度 1)。色に応じて機能する必要があります。
私の現在の結果の視覚化は以下のとおりです。
バックグラウンド:
マスク(円は透明):
前景:
結果:
そして、私はそれが次のように機能することを望みます:
バックグラウンド:
マスク (円は白、背景は黒):
前景:
結果:
そのため、後で次のように使用できます。
バックグラウンド:
マスク (円は白、背景は黒):
前景:
結果:
@Gigi ソリューションを試す: