SurfaceTexture AttachToGLContext 和 Surface

SurfaceTexture AttachToGLContext and Surface

我想知道如果我想从 SurfaceTexture 调用 attachToGLContext 方法是否需要重新制作 Surface。我试图查看 android 文档,但没有提及。

我猜不是,因为据我所知,Surface 是 SurfaceTexture 的缓冲区,它可以充当 OpenGL 上下文的外部纹理。因此,将 SurfaceTexture 附加到不同的上下文不应影响这一点。

有人确定吗?

SurfaceTexture 的内部名称是 "GLConsumer"。 Surfaces 具有生产者-消费者关系,SurfaceTexture 是一个消费者,它获取任何它得到的东西并将其作为 GLES 纹理提供。

附加在其上的Surface(通常使用以SurfaceTexture为参数的Surface构造函数)是生产者端。虽然生产者和消费者之间的通信涉及缓冲区队列,但将 Surface 描述为 "a buffer" 并不准确。它更像是一个向消费者发送图形数据的通信端点。

更改与消费者端关联的 EGL 上下文对生产者端没有影响。附加/分离调用不会断开生产者。它们只会影响 SurfaceTexture 对其接收的数据缓冲区所做的操作。

虽然需要使用这些调用是相当不寻常的,并且可能会有一些与操作 EGL 上下文相关的开销,因此请确保它是您需要的。