OpenGL系列之十四:实现相机抖音特效
2022-12-05 本文已影响0人
itfitness
目录
相关文章
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
这里的流程大概如下(不包括通知更新画面的步骤)