Answer:
1)从GLSurfaceView的源代码开始,将文件命名为GLTextureView.java
2)将标题更改为:GLTextureView 扩展了TextureView 实现了SurfaceTextureListener
3)将构造函数重命名为GLTextureView。从 init() 方法中删除代码。
4)组织进口。始终选择非 GLSurfaceView 选项。
5)找到SurfaceHolder的每个实例并将其更改为SurfaceTexture
6)为SurfaceTextureListener添加未实现的方法,每个方法应如下:
- onSurfaceTextureAvailable - 表面创建(表面)
- onSurfaceTextureDestroyed - surfaceDestroyed(表面), (返回 true)
- onSurfaceTextureSizeChanged - surfaceChanged(表面,0,宽度,高度)
- onSurfaceTextureUpdated - requestRender()
7) 应该有一行调用 getHolder(),将其更改为 getSurfaceTexture()
8) 在 init() 方法中,添加以下行setSurfaceTextureListener(this)
然后添加一个OnLayoutChangeListener
并让它调用surfaceChanged(getSurfaceTexture(), 0, right - left, bottom - top)
.
这样,您应该能够将 GLSurfaceView 代码替换为GLTextureView
并获得以下好处GLTextureView
。还要确保您的应用程序支持硬件加速并且您的渲染器扩展GLTextureView
.渲染器。