0

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

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

有人确定吗?

4

1 回答 1

3

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

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

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

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

于 2015-08-22T23:12:23.033 回答