2010-07-13 206 views
2

我可以舒適地將場景渲染到紋理,並將紋理映射回幀緩衝以進行屏幕顯示。但是如果我想將紋理映射到自身以便模糊它(例如,在新位置的四分之一不透明度處),該怎麼辦。那可能嗎?在OpenGL ES中渲染紋理

我做它的方式就是啓用質地:

glEnable(GL_TEXTURE_2D); 
glBindTexture(GL_TEXTURE_2D, color_tex); 

,然後繪製它:

glVertexPointer(2, GL_FLOAT, 0, sv); 
glTexCoordPointer(2, GL_FLOAT, 0, tcb1); 
glColor4f (1.0f,1.0f,1.0f,0.25f); 
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

(一些代碼省略,很明顯)

是那個想法有什麼明顯的錯誤?我是個白癡嗎?

+0

你想使用FBO將紋理渲染到相同的紋理,但有一些處理? – 2010-07-13 16:23:20

+0

本質上。再次將紋理分層,然後進行不透明度更改。 我想我可能需要將紋理寫入另一個FBO,然後將其複製回來。是對的嗎? – mtrc 2010-07-13 16:28:51

+0

如果您使用的是iOS 6.0或更新的版本,則可以訪問gl_LastFragData變量以讀取新片段着色器通道中先前渲染的狀態。它是basicalyl的「乒乓球」,但不改變2 diff渲染紋理目標。 – MoDJ 2014-05-18 19:29:08

回答

5

不,您不能將紋理寫入相同的紋理,觸發未定義的行爲。

但是,您可以使用稱爲乒乓渲染的技術,以便將操作的結果繪製到另一個紋理中,並且如果需要執行更多處理,則會將結果寫入第一個紋理。

+0

你是絕對的明星。感謝您再次幫忙。 – mtrc 2010-07-14 08:01:29