发布Android 4.0( Ice Cream Sandwich )时,SDK中引入了新 View 。该 View 是TextureView。在文档中,它说TextureView可用于显示OpenGL场景的内容。
当您查找如何执行此操作时,您会找到一个示例的链接。
https://groups.google.com/forum/?fromgroups=#!topic/android-developers/U5RXFGpAHPE
但是,我只想将GLSurfaceView替换为TextureView,并保持其余代码不变,并且只享受TextureView的优点。
最佳答案
答案:
1)从GLSurfaceView的源代码开始,将文件命名为GLTextureView.java
2)将标题更改为:
GLTextureView扩展TextureView实现SurfaceTextureListener
3)将构造函数重命名为GLTextureView。从init()方法中删除代码。
4)组织进口。始终选择非GLSurfaceView选项。
5)查找每个SurfaceHolder实例并将其更改为SurfaceTexture
6)为SurfaceTextureListener添加未实现的方法,每个方法应如下:
7)应该在一行中调用getHolder(),将其更改为getSurfaceTexture()
8)在init()方法中,将以下行
setSurfaceTextureListener(this)
然后添加一个
OnLayoutChangeListener
,并将其称为surfaceChanged(getSurfaceTexture(), 0, right - left, bottom - top)
。这样一来,您应该可以将GLTSurfaceView代码替换为
GLTextureView
并获得GLTextureView
的好处。还要确保您的应用支持硬件加速,并且您的渲染器扩展了GLTextureView
.Renderer。