Nehe の #20 チュートリアルとマスキングに関する質問を読んで、白黒画像と不透明画像を使用してマスキングを実装しましたが、結果は完全に期待どおりではありません (iPhone で OpenGL ES 1 を使用しているため、使用できませんシェーダー)。
Source+Mask=Result
結果の画像でわかるように、マスクの白い部分は透明ではなく、黒い部分はソースの色ではなく、白 (!) レンダリングに使用するソース コードは次のとおりです。
// we render from one big texture using coordinates
// so changing rectangle will change the drawn image
_pressedFrame = maskRect;
glBlendFunc(GL_DST_COLOR,GL_ZERO);
[super render:sender];
_pressedFrame = normalRect;
glBlendFunc(GL_ONE,GL_ONE);
[super render:sender];
助けてくれてありがとう!