OpenGL系列之十四:实现相机抖音特效

目录

相关文章

OpenGL系列之一:OpenGL第一个程序
OpenGL系列之二:绘制三角形
OpenGL系列之三:三角形顶点增加颜色
OpenGL系列之四:绘制四边形
OpenGL系列之五:绘制点和线
OpenGL系列之六:绘制立方体
OpenGL系列之七:纹理贴图
OpenGL系列之八:立方体纹理贴图
OpenGL系列之九:glsl着色器语言
OpenGL系列之十:VAO、VBO、EBO的应用
OpenGL系列之十一:Shader图片转场切换动画
OpenGL系列之十二:Shader燃烧动画
OpenGL系列之十三:实现Shader绚丽动画

实现效果

实现步骤

1.引入CameraX依赖

因为这个版本的CameraX很方便的可以获取相机数据

// CameraX core library
    def camerax_version = '1.0.0-alpha05'
//    def camerax_version = '1.1.0-alpha03'目前最新版,但是为了稳定我们还是选择rc版
    implementation "androidx.camera:camera-core:1.0.0-alpha05"
    // CameraX Camera2 extensions[可选]拓展库可实现人像、HDR、夜间和美颜、滤镜但依赖于OEM
    implementation "androidx.camera:camera-camera2:$camerax_version"
    // CameraX Lifecycle library[可选]避免手动在生命周期释放和销毁数据
2.创建CameraHelper

创建CameraHelper用于获取相机预览画面数据

public class CameraHelper {
    private static CameraX.LensFacing lensFacing = CameraX.LensFacing.BACK;

    public CameraHelper(LifecycleOwner lifecycleOwner, Preview.OnPreviewOutputUpdateListener onPreviewOutputUpdateListener) {
        CameraX.bindToLifecycle(lifecycleOwner, getPreview(onPreviewOutputUpdateListener));
    }

    private static Preview getPreview(Preview.OnPreviewOutputUpdateListener listener) {
        PreviewConfig previewConfig = new PreviewConfig.Builder()
                .setTargetAspectRatio(Rational.NaN)
                .setLensFacing(lensFacing)
                .build();
        Preview preview = new Preview(previewConfig);
        preview.setOnPreviewOutputUpdateListener(listener);
        return preview;
    }
}
3.创建CameraView和GLRender

这里的流程大概如下(不包括通知更新画面的步骤)


你可能感兴趣的:(OpenGL系列之十四:实现相机抖音特效)