2009-08-05 95 views
2

當試圖掩蓋紋理 (如ColorSplash或iSteam等其他應用程序)時,最佳選擇是什麼?iPhone OpenGL ES Texture2D Masking

我開始學習OPENGL ES樣... 4天前(我是一個總的 新秀),並嘗試以下方法:

1)我創建了一個彩色的Texture2D,第一 的灰度版本質地和三分之一的Texture2D稱爲掩模

2)我還創建一個Texture2D用於刷...這是灰度和 它是不透明的(刷=黑色= 0,0,0,1和周圍=白色= 1 ,1,1,1)。我的目的是創建具有光滑 邊緣抗鋸齒刷,但我很好,有正常的,現在

3)我搜索互聯網上的屏蔽技術,發現了這個 教程ZeusCMD - 設計與開發教程:OpenGL的ES編程教程 - 屏蔽 有關屏蔽。本教程告訴我用混合實現 屏蔽...先畫上色,然後用 glBlendFunc(GL_DST_COLOR,GL_ZERO)面膜,然後用 glBlendFunc(GL_ONE,GL_ONE)灰度......這給了我一些東西接近 我想要什麼......但不完全是我想要的。其結果是遮蔽而 它在某種程度上overbright-ED

4)繪製到面膜的質地我用了一個額外的幀緩衝對象(FBO)

我不是得到的圖像真的很開心(overbright-編輯圖片) 也沒有用這種方法實現的速度。我認爲正常的方式 是直接畫到灰度(覆蓋)texture2D影響 只有它是刷子命中的地方的alpha通道。有沒有一種快速實現這一點的方法?我搜查了很多,從來沒有得到清楚和可以理解的 答案。然後,在主要繪製循環中,I 只能繪製彩色紋理,然後在glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)上混合頂部 上的灰度。

我只是想學習使用OPENGL ES,它使我瘋狂,因爲我無法正常工作。一個建議,一個教程的鏈接將不勝感激。

回答

0

對於在iPhone上實際工作的內容,請嘗試texture combiners

我用它們來掩蓋RGBA紋理對另一個轉換後的alpha紋理。
這是爲了在沒有模板緩衝區的情況下生成複雜的陰影,
但您的情況似乎沒有太大的不同。

請注意,該鏈接以片段着色器的方式說明了組合器的功能。
不幸的是合成器比着色器更復雜。