OpenGL的概念,相信大家都听说过,应用场景非常广泛,音视频、图形渲染、游戏等等。学习OpenGL是有一定的门槛,期间也看过很多其他OpenGL教程,有些写的是非常不错的,例如LearnOpenGL,能够系统性的学习OpenGL概念和应用。本系列教程,主要会从Android OpenGL ES入手,系统性的介绍图形学渲染技术,结合音视频进行相关应用,并分析两个教科书级别的项目,更加巩固OpenGL技术。
最近比较忙,文章也很久没有更新了。
最近项目中用到Camera,做了一些功能,发现Camera涉及到很多内容,可以做成一个系列来分析。随着5G时代的到来,音视频相关的内容,会越来越流行,而Camera应该算是最基础的设施了,所以接下来会对Camera这块进行分析,通过下面这些文章,可以对Camera有个更深入的理解。
建立一套比较完整的 Android 知识体系,对Android开发或者面试都有裨益,以及后面对某个垂直领域的深入,或者成为该领域的技术专家,甚至是架构师,也有一定的路线指导作用。
夯实基础是重中之重,深入某个垂直领域,都是根据当前的业务需求,一步步深入,从而成为该领域专家。
下面列表的内容,都是经过实例验证,做到真正掌握才会写到自己的博客里。比较完整的提纲是在最后的思维导图中,提纲中的内容,如果经过了自己验证,就会更新到博客里(持续更新)。
简介
OpenGL
OpenGL(Open Graphics Library,开放图形库),是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口规范。
它本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。它的实现由显示设备厂商提供,并且非常依赖该厂商提供的硬件。
当你使用Apple系统的时候,OpenGL库是由Apple维护的。在Windows上,OpenGL库可能是Direct3D接口的一个封装(Wrapper)。表面上调用OpenGL接口,实际上是间接调用了Direct3D接口。
在前面一篇文章中,已经介绍了如何使用 CameraX,这篇文章就分析下 CameraX 主要流程的源码。
在前面文章中已经介绍了如何使用 CameraView,这是 Google 官方提供的库,并有相关 demo,因为 Android 的碎片化太严重,官方也是考虑到这些,才提供了CameraView供大家学习和参考。
前面几篇文章介绍了Camera1,Camera2,CameraView和CameraX的使用,对各个API的使用,应该问题不大,不过在真正开发过程中,也会遇到各种不同的问题,本篇文章继续介绍相机开发过程中遇到的问题,主要是相机预览、拍照尺寸,方向,以及图像数据的处理。
前面两篇介绍了Camera1和Camera2的使用,发现Camera API从1到2的变化非常大,Camera2的复杂度提升了不少,官方为了让我们更容易使用Camera,出了个一个官方的库cameraview。不过这个库已经Deprecated,官方建议使用Jetpack CameraX 替代。本篇文章就介绍下CameraView和CameraX的使用
上篇文章介绍了Camera1的使用,本篇介绍Camera2的使用。
Camera2(android.hardware.camera2)是从 Android 5.0 L 版本开始引入的,并且废弃了旧的相机框架Camera1(android.hardware.Camera)。
相比于Camera1,Camera2架构上也发生了变化,API上的使用难度也增加了。Camera2将相机设备模拟成一个管道,它按顺序处理每一帧的请求并返回请求结果给客户端。
Android Camera API和Android版本一样,也是碎片化比较严重,所以Google官方推出了CameraView,提供给开发者参考和学习,现在最新的可以使用Jetpack CameraX来开发,大大简化了开发的复杂度。本系列从Camera1->Camera2->CameraView->CameraX,一步步讲解Camera的进化过程,本篇先介绍Camera1的使用。