【笔记】【百人计划】图形1.4 PC手机图形API介绍

图形1.4PC手机图形API介绍

基础概念

  • 图形API

    • 是一个图形库,用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序接口(API),针对GPU。
  • 应用端

    • 我们自己的程序端
  • 图元

    • 要渲染的几何物体、形状
  • 纹理

    • 可以理解为贴图,opengl es中纹理就是图片的另一种叫法
  • 纹素

    • 纹理的基础单元(纹理的像素)
  • 顶点数组

    • 顶点是组成图元的各个顶点的坐标数据(vertex),这些坐标数据可以一起存到要给内存数组中,这就是顶点数组
  • 顶点缓冲区

    • 显存中专门分配一块显存来存储这个顶点数组,这个显存就是顶点缓冲区
  • 顶点着色器

  • 片元着色器

主流图形API

image-20220722211701281

  • DirectX(windows)

  • Opengl(windows,linux,mac)

  • Opengl ES(移动设备——手机、oculus)

    • Opengl ES2.0/3.0是可编程图形管线(vs、fs),1.x是固定管线

Opengl ES3.0新功能

image-20220722211827363

  • 兼容性

    • gles 3.0是向后兼容的(2.0的程序可以在3.0中使用)
  • 新特性

    • 阴影贴图、体渲染、gpu粒子动画、几何形状实例化、纹理压缩、gamma矫正
    • 适应嵌入系统的局限性
  • 渲染管线

    • 移除alpha测试
      • 片段着色器可抛弃片段,因此alpha测试可以在fs中进行
    • 移除逻辑操作(LogicOp)
      • 很少使用
  • Shader编写

    • 版本声明

    • #version 300 es//声明为指定使用Opengl ES3.0版本
      //不添加版本声明或使用#version 100 es 指定使用ES2.0
      //(2.0是es中最先出的可编程管线,所以是100,为了匹配版本号,3.0跳到了300 es)
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18

      - 输入输出

      - in,out,inout关键字取代attribute,varing
      - gl_FragColor和gl_FragData删除了
      - 片段着色器可以使用out声明字段输出

      - 变量赋值

      - 可以直接使用layout对指定位置变量赋值

      - ```glsl
      //shader中
      layout (location = 1) uniform float a;
      //应用端代码中
      GLES30.glUniform1f(1,1f);
      //2.0中必须使用如下形式
      GLES20.glUniform1f(GLES20.glGetAttribLocation(program,"a"),1f)

骁龙Adreno对应ES版本型号

https://zh.wikipedia.org/wiki/Adreno

高通骁龙组件列表 - 维基百科,自由的百科全书 (wikipedia.org)

Adreno320开始支持OpenglES3.0

作业

  • 支持Opengl es3.2的骁龙GPU型号有哪些
    • Adreno420/430/5xx/6xx/7xx
  • 如何看待Vulkan、
    • 对Vulkan了解不多,最大的特点就是:更复杂,也更高性能,并且支持跨平台。这增加了它的学习成本和上手难度的同时,能更深入地控制硬件,达到对性能更极致的追求。