【发布时间】:2016-05-22 10:41:48
【问题描述】:
目前我正在屏幕上显示相机的预览,提供相机预览纹理 - camera.setPreviewTexture(...)(当然使用 opengl 进行)。
我有一个本地库,它获取bytes[] 作为图像,并返回byte[] - 与输入图像相关的结果图像。我想调用它,然后将输入图像和结果绘制到屏幕上——彼此重叠。
我知道在 Opengl 中,为了在 CPU 中获取纹理数据,我们必须使用 glReadPixel 读取它,并且在处理之后我必须将结果加载到纹理中 - 这将对每一帧都有表演。
我考虑过使用camera.setPreviewCallback(...),我正在获取框架(调用处理方法并将结果传输到我的SurfaceView),并并行继续使用纹理预览技术在屏幕上绘图,但比我我害怕在previewCallback 中获得的帧与我在纹理中获得的帧之间进行同步。
我错过了什么吗?还是没有简单的方法来解决这个问题?
【问题讨论】:
-
你说得对,SurfaceTexture和onPreviewFrame之间没有同步。就在几分钟前,我发布了一个类似的answer。请检查它对您的相关程度。
-
不是我想读的答案,但很遗憾,这就是我的想法
-
不要惩罚信使 ;) 将相机帧推送到自定义纹理在 Android 上非常有效;我们在 720p 时达到了 30 FPS。
-
我没有把你带到这里。 将相机帧推送到自定义纹理 ?我需要将帧的数据作为字节数组 - 这是我的问题。我正在使用 frag-shader 进行一些操作,但主要算法是在本机中获取此数据数组
-
As fadden explains 更详细,需要传递像素来显示;当今 Android 上最有效的机制之一是
glTexImage2D()(或glTexSubImage2D())
标签: android opengl-es android-camera