阅读 126

OpenGL入门篇(概念篇)

图形Api的简单介绍及对比

图形Api主要解决的是渲染问题。下面介绍几种并简单说明一下。

  • OpenGL:适用于渲染PC端(Windows或Mac)
  • OpenGL ES:适用于渲染移动端(iOS或者Android)
  • Metal:是Apple2014年推出,2018年崛起的语言。把渲染推到极致,用于3D渲染推出的框架(正在慢慢走向跨平台)
  • OpenCV:用于识别,大型项目有些用face++。

注:OpenGL ES只是比OpenGL减少一部分子集,ES(嵌入式)应用于移动端。苹果底层渲染目前是由metal实现的

OpenGL的专业名词解释

OpenGL 上下⽂ (context)

  • context上下文相当于一个庞大的状态机,主要用于记录openGL中的各种状态。也是openGL执行命令的基础
  • 上下文是一个庞大的状态机。切换上下文会产生庞大的开销。但是不同的模块可能需要使用独立的状态管理。所以可以分别创建多个上下文。在不同的线程中使用不同的上下文。上下文中共享纹理缓冲区等资源,这样会更加高效。

渲染

  • 简单来说就是将图形或图像数据转换成2D的空间图像。叫做渲染。

顶点数组

  • openGL ES只有3中图元:点、线、三角形。把顶点数据存在内存中,存储内存被称为顶点数组。顶点数组存储顶点数据。

顶点缓冲区

  • 比存储到内存更加高效,,提前预留一块显存,把顶点数据预先传到显存当中,这块显存称为顶点缓冲区。

管线

  • 管线是一个抽象的概念。类似于Jenkins的pipeline流水线。有固定的顺序,且顺序不能别打破。

固定管线

  • 可以想象成一个封装好的、具有好多固定的模式。

可编程管线

  • 开发者可以自定义封装的管线。

着色器

  • shader本质上一一段代码段,用来操作GPU执行。
  • 着色器包含固定着色器和自定义着色器两类。固定着色器是有苹果封装好的,开发者只需传入参数即可使用的。自定义着色器是有开发者自己通过GLSL语法自己设计的着色器。
  • 开发者可以操作的着色器主要分为2种:顶点着色器和片元着色器。
  • 顶点着色器:用来处理顶点之间的变换(旋转、投影、平移)。
  • 片元着色器:用来处理每个像素点的颜色计算和填充。
  • GLSL:是openGL 自定义着色器的一门语言。

光栅化

  • 就是把顶点数据转换成片元的过程。
  • 总共分为2打过程:1、确定图形所在像素范围,2、上色

纹理

  • 我们说的位图就是纹理,也可以理解为在渲染的时候填充的图片。

混合

  • 多种颜色造成重叠,会通过混合算法记性混合。

变换矩阵

  • 图形想发生平移、缩放、旋转等操作,就需要使用变换矩阵。

投影矩阵

  • 用于将3D左边转换为二维屏幕坐标,实际绘制线条也在二维坐标下。
  • 投影方式有2种,正投影和透视投影。

    正投影

    按比例1:1会绘制,显示2D渲染效果。

    透视投影

    显示3D渲染效果:远小近大。