回答:
1)从GLSurfaceView的源代码开始,将文件命名为GLTextureView.java
2)将表头改为:
GLTextureView extends TextureView implements SurfaceTextureListener
3) 将构造函数重命名为 GLTextureView。从 init() 方法中删除代码。
4)组织进口。始终选择非 GLSurfaceView 选项。
5) 找到 SurfaceHolder 的每个实例并将其更改为 SurfaceTexture
6)为SurfaceTextureListener添加Unimplemented方法,每个方法应该如下:
- onSurfaceTextureAvailable -surfaceCreated(surface)
- onSurfaceTextureDestroyed - surfaceDestroyed(surface), (return true)
- onSurfaceTextureSizeChanged - surfaceChanged(surface, 0, width, height)
- onSurfaceTextureUpdated - requestRender()
7) 应该有一行调用 getHolder(),将其更改为 getSurfaceTexture()
8) 在 init() 方法中,放入以下行setSurfaceTextureListener(this)
然后添加一个OnLayoutChangeListener
并让它调用surfaceChanged(getSurfaceTexture(), 0, right - left, bottom - top)
。
有了它,您应该能够将您的 GLSurfaceView 代码替换GLTextureView
为GLTextureView
. 还要确保您的应用支持硬件加速并且您的渲染器扩展GLTextureView
了 .Renderer。