1

我正在處理GLES 1.1中的項目。它必須是GLES 1.1。乘以其alpha的每個像素Open GLES 1.1(預乘)然後反轉

但它必須做一些預乘,即得到每一個像素,並從rgba = r * a,b * a,g * a,a改變它。然後再反轉它。

如果我有着色器,這將是沒有問題,但當然是gles 1.1我不知道。

通過readpixels做到這一點,然後在CPU上做並放回它的速度非常慢,所以我試圖想辦法我可以作弊。

現在的一種方式,我可以做預乘是通過採取glTexEnvi

的優勢
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); 

glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE); 

glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE0); 
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR); 

glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_TEXTURE1); 
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_ALPHA); 

但隨後事後,我需要扭轉操作。對於我來說,我想不出一種扭轉它的方法。

如果一切都有相同的alpha我可以濫用glLighting功能,但可悲的是,他們沒有。

我感覺我有點註定了。

也許我可以只使用共享的背景下,做GLES 2.0的一個片段......但我覺得會與自己的開銷

如果有人對此有任何意見或想法,在所有我將不勝感激聽他們!

回答

0

找不到答案,我自己或在這裏。這是一段時間,所以任何人想知道...

最後,我設法說服「權力,」讓我轉換項目爲GLES 2.0。這個過程實際上並不是很痛苦(幸運的是),這非常值得。

上述操作已成功卸載到GPU以及其他一些功能,性能從1fps提高到60+ ......非常值得:)。

它也值得注意的是,如果重寫不是一個選項,我一個混合的方法將是非常值得的