画像の一部が透明になるように、OpenGL で画像をマスクしようとしています。動作していない私のコードは次のとおりです。
draw_img(background);
...
glEnable(GL_BLEND);
glDisable(GL_DEPTH_TEST);
glBlendFunc(GL_ONE, GL_ZERO);
draw_img(mask);
glBlendFunc(GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA);
draw_img(foreground);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
これが私の背景画像で、その上に描画しようとしています:
それぞれテクスチャとマスクを次に示します (マスクの白は本当に透明です。見やすいように平らにしました)。
これは私が期待するものです:
そして、これは私が実際に得るものです:
何が問題なのですか?