首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用OpenGL预览CameraX摄像头数据

前言

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!!!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210408A01A6300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券