从 GLSurfaceView 转换为 TextureView(通过 GLTextureView)

2024-01-10

当Android 4.0(Ice Cream Sandwich)发布时,sdk中引入了新的视图。这个视图就是TextureView。在文档中,它说TextureView可用于显示OpenGL场景的内容。

当您查找如何执行此操作时,您会找到一个示例的链接。

https://groups.google.com/forum/?fromgroups=#!topic/android-developers/U5RXFGpAHPE https://groups.google.com/forum/?fromgroups=#!topic/android-developers/U5RXFGpAHPE

然而,我只想用TextureView替换GLSurfaceView,并保持其余代码相同,并且只获得TextureView的优点。


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.渲染器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 GLSurfaceView 转换为 TextureView(通过 GLTextureView) 的相关文章

随机推荐