将SurfaceTexture与RenderScript结合使用

Arj*_*jan 20 android renderscript android-camera

我想在android上的GPU上进行相机图像处理.

在我目前的设置中,我使用SurfaceTexture从相机图像流中捕获帧作为OpenGL ES纹理.这是在我的着色器中访问相机流的有效方法.(http://developer.android.com/reference/android/graphics/Sur​​faceTexture.html)

现在我想开始使用新的RenderScript API而不是直接使用OenGL ES.(http://developer.android.com/guide/topics/renderscript/index.html)

但是要创建SurfaceTexture,我需要将openGl纹理ID传递给构造函数.遗憾的是,纹理ID不可用(RenderScript使用Allocation类来加载纹理,不会显示纹理ID).所以我在使用RenderScript时无法创建SurfaceTexture.

我已经阅读了关于renderscript的所有文档(它仍然非常稀疏)并查看了示例,但它们没有关于该主题的信息.

所以我的问题是:是否可以将SurfaceTexture与RenderScript结合使用,还是有其他有效的方法在RenderScript Graphics脚本中使用实时相机流?

roc*_*eye 1

如果我理解正确的话,你已经使用了SurfaceTexture. 然后,您可以使用setOnFrameAvailableListener注册回调。

我看到两个解决方案:

  1. 实现您自己的RSTextureView,它继承自SurfaceTexture.OnFrameAvailableListener。将您的视图注册为SurfaceTexture回调。每次相机流更新您的表面视图时,您RSTextureView都会收到通知,并且您可以按照您想要的方式处理它。

  2. 另一种解决方案是实现您自己的RenderScriptGL(仍然继承自SurfaceTexture.OnFrameAvailableListener)并在调用回调时调用setSurfaceTexture 。

您应该能够将这两种解决方案中的至少一种RenderScript结合起来。SurfaceTexture