前言
CameraX 是一个 Jetpack 支持库,旨在帮助您简化相机应用的开发工作。笔者看了下网上关于CameraX的资料虽然很多,但是很多基本上都是官网资料的翻版,学习的价值很没有直接看官网的高。
也有些博客介绍了CameraX结合OpenGL渲染的的例子,但好像都建立在类的这个方法中进行处理,但是笔者更新CameraX版本之后发现这个方法直接没了,完犊子了...
你看见我的尔康了吗
当然本文所介绍的方法随着CameraX的发展也会过时,但也希望能起到一点抛砖引玉的作用。。。。
show me the code
首先自定义一个OpenGL的渲染View,继承于GLSurfaceView,GLCameraView.java:
编写顶点着色器camera_vertex.glsl:
编写片段着色器camera_frag.glsl:
加载及编译着色器程序OpenGLUtils.java:
结合CameraX用起来MainActivity.java:
关键代码点加了点注释,打完收工。
举一反三
1、目前的预览竖屏看起来挺正常的,但是横屏的时候预览界面明显发生变形了,这个问题怎么解决呢?有兴趣的童鞋可以了解下OpenGL的矩阵变换的相关知识,利用矩阵变换来解决这个问题。
2、预览使用的默认的比较低的分辨率,如果需要预览高分辨率需要怎么修改呢?
3、笔者在预览的时候测试了一下帧率,大概是每秒26帧作用,如果要做到预览每秒60帧又要怎么改呢?
4、入门OpenGL的童鞋应该知道、 、等相关概念,想进一步深入学习的童鞋也可以将、 、与CameraX结合起来做一个实践。
哔哔两句
CameraX虽然已经提出了两年多了,但是一直还没有发布正式版,貌似最近发布了一个beat版本,而且笔者在学习的过程中发现相关的api也一直在变化。所以笔者觉得CameraX是未来,但不是现在。
虽然说CameraX还不稳定,甚至可能还存在着各种各样的问题,但是机会更加青睐的是那些未雨绸缪的人,持续关注学习CameraX的演进,本身就像跟着谷歌工程师学习的一个过程。
参考资料:《谷歌官方》
关注我,一起进步,人生不止coding!!!
领取专属 10元无门槛券
私享最新 技术干货