2010-06-23 61 views
0

閱讀#關於Nehe的#20教程和關於掩蔽的問題,我使用黑白圖像和不透明圖像實現了掩膜,但結果完全不是預期的結果(我正在使用OpenGL ES 1 iPhone,所以不能使用着色器)。
Source+Mask=Result
由於可以在效果圖是什麼白口罩上可以看出是不是透明的,什麼是黑是不是源顏色,但是白色 這裏是源代碼我用它來呈現它(!): 在OpenGL ES中掩蔽

// 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]; 

感謝您的幫助!

回答

2

對於NeHe教程正確工作的技術,源圖像的背景(即蒙版圖像爲白色的任何地方)需要全黑。雖然從第一張圖片中不清楚源頭是什麼,但我懷疑它在最終圖像中明亮的地方並不是黑色。

但是,在OpenGL ES 1.1中這樣做並不是必需的。您可以使用多紋理一次性渲染帶有Alpha蒙版的圖像。此外,如果您的面具和圖像總是放在一起,那麼最好將它們烘焙成單個RGBA紋理 - 不需要多重紋理。

+0

紋理非常大,所以我希望只加載一次,並使用它的部分的簡單混合,但因爲它不可能,那麼我想我會使用多紋理。 謝謝。 – 2010-06-24 12:53:42