为了在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