在webRTC中,在SurfaceTextureHelper
中,surfaceTexture
(用于处理openGL纹理的创建/更新)是在后台线程内创建的:
final HandlerThread thread = new HandlerThread(threadName);
thread.start();
我们在这个新创建的线程中
oesTextureId = GlUtil.generateTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES);
surfaceTexture = new SurfaceTexture(oesTextureId);
问题是OnFrameAvailableListener
的{{1}}将在创建surfacetexture
的线程中被调用(无缝逻辑)。我的问题是我的应用程序的所有绘制都在主UI线程中完成(而且我无法更改),因此我在这里最终将在背景线程中更新纹理( surfacetexture
的纹理),但将打印在前景线程上。
是否有可能正常工作? textureID永远不会改变,只是纹理的内容会在bakcground线程中更新