如果我想从SurfaceTexture调用attachToGLContext方法,我试图找出是否需要重新制作Surface。我试着查看android文档,但没有提及。
我猜不是因为据我所知,Surface是SurfaceTexture的缓冲区,它可以作为OpenGL上下文的外部纹理。因此,将SurfaceTexture附加到不同的上下文不应该影响这一点。
有人确切知道吗?
答案 0 :(得分:2)
SurfaceTexture的内部名称是" GLConsumer"。 Surfaces具有生产者 - 消费者关系,而SurfaceTexture是一个消费者,可以获取它所获得的任何东西,并使其可用作GLES纹理。
附加到它的Surface(通常使用Surface构造函数,它将SurfaceTexture作为参数)是生产者端。虽然生产者和消费者之间的通信中涉及缓冲区队列,但将Surface描述为"缓冲区"并不是很准确。它更像是一个向消费者发送图形数据的通信端点。
更改与消费者方相关联的EGL上下文对生产者方没有影响。附加/分离调用不会断开生产者的连接。它们只影响SurfaceTexture对它接收的数据缓冲区的作用。
虽然需要使用这些调用是相当不寻常的,并且操作EGL上下文可能会有一些开销,所以请确保它是您需要的。