如何使用带有 OpenGL ES 的 android 相机工作?

Posted

技术标签:

【中文标题】如何使用带有 OpenGL ES 的 android 相机工作?【英文标题】:how to use android camera with OpenGL ES to work? 【发布时间】:2011-12-12 10:49:09 【问题描述】:

我想使用 OpenGL ES 进行 android 相机预览并保存捕获的图像。

我喜欢在 Android 相机中使用 OpenGL ES 来为 Android 相机添加一些效果。所以请谁告诉我怎么做?

【问题讨论】:

【参考方案1】:

你需要实现android.hardware.Camera.PreviewCallback接口并重写方法

public synchronized void onPreviewFrame(byte[] data, Camera camera) 
                        myOpenGLObject.receiveFrames(data);
        

读取从相机回调接收到的帧。 我建议你看一下andar 源http://code.google.com/p/andar/。尤其是CameraPreviewHandler.java的班级。

我希望这能回答你的问题。

【讨论】:

感谢您的回复。至少我得到了一个答复。但请参阅更新后的问题。 如果我得到了我想要的正确结果,我会接受你的回答。【参考方案2】:

更快的方法是避免onPreviewFrame 回调并使用SurfaceTexture 作为相机渲染预览的纹理。 看看 grafika 里面的例子,它或多或少是一样的:https://github.com/google/grafika/blob/master/src/com/android/grafika/CameraCaptureActivity.java

【讨论】:

以上是关于如何使用带有 OpenGL ES 的 android 相机工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 OpenGL-ES 在带有 SDL2 的 Raspberry Pi 上工作?

OpenGL ES 在不使用 glPixelStorei 的情况下更新纹理的子部分

OpenGL ES - 如何批量渲染 500 多个带有不同 alpha、旋转和缩放的粒子?

在 Android 中使用带有 OpenGL ES 的 VBO 性能不佳

如何在 OpenGL ES 2.0 中使用 png 图像纹理立方体?

iOS 上的 OpenGL ES 多个没有索引的 VBO