爲了在SurfaceTexture上執行高斯模糊,我正在執行雙通道渲染,這意味着我將紋理通過一個着色器(水平模糊),然後通過另一個着色器(垂直模糊)。Android:雙重渲染使用OpenGL渲染到SurfaceTexture
我理解這個背後的理論:將第一個紋理渲染到FBO,將第二個紋理渲染到SurfaceTexture本身。
這裏有一些例子,但它們都不適用,因爲SurfaceTexture在glBindTexture中使用GL_TEXTURE_EXTERNAL_OES作爲其目標,而不是GL_TEXTURE_2D。因此,在調用glFramebufferTexture2D時,不能將GL_TEXTURE_2D用作文本目標,我認爲GL_TEXTURE_EXTERNAL_OES不能用於此調用。
任何人都可以提出一種方法來渲染紋理兩次,最終渲染到SurfaceTexture?
重要更新:我使用SurfaceTexture,因爲這是播放到表面上的視頻的動態模糊。
編輯:這個問題被問及我的一些誤解。 SurfaceTexture不是顯示元素。它接收來自曲面的數據,並將其附加到GL_TEXTURE_EXTERNAL_OES。
謝謝。
我一直使用GL_TEXTURE_2D。由於某種原因,這不適合你嗎? –
當我使用GL_TEXTURE_EXTERNAL_OES作爲glBindTexture的目標時,無論我在該調用中使用GL_TEXTURE_2D還是GL_TEXTURE_EXTERNAL_OES,在glFramebufferTexture2D中傳遞相同的紋理名稱時,都會得到無效的操作錯誤。如果glBindTexture中的目標是GL_TEXTURE_2D,綁定似乎可行,但顯然我無法再將FBO渲染到SurfaceTexture。 – Michael