在前面几个章节中,我们使用到了很多概念,没有进行描述,本节针对前面使用到的一些概念,再进行一个普及。已经涉及到的几个概念:VBO、EBO(IBO)、VAO。
VBO和EBO是在OpenGL1.5中引入的,主要用于优化顶点数据的存储和索引管理。
VAO则是在OpenGL3.0中引入的,用于简化顶点缓冲和属性的管理。
VBO和EBO的作用是在显存中申请一块内存,用于缓存数据,降低内存拷贝带来的开销。之前用于绘制的顶点数据会先保存在CPU,每次调用绘制函数的时候,再把顶点数据从CPU拷贝到显存中,这也是一个比较大的开销。
简介
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供大家学习和参考。