2015-09-04 215 views
1

油漆在FBO +紋理=灰混合這是我渲染我在片段着色器刷:的OpenGL ES 2.0:在紋理

gl_FragColor.rgb = Color.rgb; 
gl_FragColor.a = Texture.a * Color.a; 

在某一(0,0,0,0這個混合函數)質地:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

這是我看到的時候我畫我的紋理添加到我的白色背景glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA):

My stroke well viewed

,但是這是我得到了我的質地:

Wrong blending in texture

有人可以幫助我瞭解爲什麼我在我的紋理這個灰色的行程?因爲我需要截取此紋理的截圖,並且我想要具有相同的渲染但沒有白色背景。

  • [第一畫面]當我畫我的「看法」我有一個白色的背景
  • [第二畫面]但我儲存我的紋理中風誰擁有一個透明的背景
+0

有問題嗎? – Columbo

+0

@Columbo:我認爲這很明確:)我不想存儲這個灰色筆畫,但存儲我看到的筆畫,「按原樣」。 – user2629409

回答

0

你」重做兩次混合操作,一次在着色器中,一次使用glBlendFunc調用。直接渲染到屏幕時,它不會再次應用glBlendFunc,但是,渲染到紋理時會在渲染到紋理時應用,然後在紋理渲染到屏幕時再次應用。

你有兩個選擇,1)不要混合着色器,2)使用不同的混合函數(我發現glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);工作正常)。我發現選項2最適合我,處理OpenGL混合函數是非常煩人的。

+0

謝謝你的幫助!我不確定你明白你所看到的永遠不會渲染到紋理之外:它只是顯示有或沒有白色背景。你認爲這個問題還是一樣的嗎? – user2629409