Android:将SurfaceTexture附加到FrameBuffer

时间:2016-02-05 18:24:50

标签: android opengl-es shader framebuffer glsurfaceview

我正在执行需要双通道渲染的视频效果(纹理需要通过多个着色器程序传递)。将SurfaceTexture附加到构造函数中传递的GL_TEXTURE_EXTERNAL_OES似乎不是解决方案,因为显示的结果只呈现一次。

我所知道的一个解决方案是可以对FrameBuffer进行第一次渲染,然后可以将生成的纹理渲染到实际显示的位置。

但是,似乎SurfaceTexture必须附加到GL_TEXTURE_EXTERNAL_OES纹理,而不是FrameBuffer。我不确定是否有解决方法,或者我应采取不同的方法。

谢谢。

1 个答案:

答案 0 :(得分:1)

SurfaceTexture接收图形数据的缓冲区,并且基本上将其包装为"外部"质地。如果查看源代码有帮助,请从updateTexImage()开始。请注意,类的名称(" GLConsumer")是对函数的更准确的描述,而不是" SurfaceTexture":它使用图形数据帧并使它们可用于GLES。

SurfaceTexture预计可以使用OpenGL ES无法自然生成的格式。使用,特别是YUV,所以它总是使用外部纹理。