美文网首页
OpenGL ES学习之路(4.0) 基本图形硬件流⽔线设计与具

OpenGL ES学习之路(4.0) 基本图形硬件流⽔线设计与具

作者: velue | 来源:发表于2019-03-05 20:58 被阅读0次

基本图形硬件流⽔线设计

  • 硬件流水线设计主要分为三部分:
    • 应用程序层:游戏和应用层软件开发人员为主体,通过调用API进⾏上层开发,不需要考虑移植性问题。应⽤程序层主要与内存,CPU打交道,诸如碰撞检测,场景图监理,视锥裁剪等经典算法在此阶段执行。在阶段的末端,几何体的数据(顶点坐标,法向量,纹理坐标,纹理)等通过数据总线传送到图形硬件
  • 硬件抽象层
    • 硬件抽象层:抽象出硬件的加速功能,进⾏有利于应用层开发的封装,并向应⽤层开发API,在这⼀层,我们目前使用的是DirectX与OpenGL。对于这一部分,主要是一些API等的调⽤。
    • 硬件层:将硬件驱动提供给抽象层,以实现抽象层加速功能的有效性。硬件层在渲染流水线中最为复杂,也最为重要。可编程渲染流⽔线与固定渲染流水线的区别在于是否对着⾊器进行编程。首先我们先了解固定渲染流水线它主要分为以下几个阶段:顶点变换->图元转配与光栅化->⽚段纹理映射和着色->光栅化操作
  • 应用层面主要通过调度APi进行开发,而较为麻烦的对硬件操作的层面就交给OpenGL/Direct3D 来处理和调度GPU,这样大大减少开发者的开发成本和学习成本。


    image.png

渲染流⽔线的具体流程图

  • 将顶点转换显示成图形需要经过下面八个简单步骤才能完成,首先传入顶点数据,然后进行顶点变换坐标,将经过变化的顶点进行图元装配和光栅化处理,并将顶点之间连接起来之后数据传到片元着色器,然后进行片段纹理映射和着色,然后进行光栅化操作即确定像素点的位置,最终存入像素缓冲区


    image.png

硬件层—可编程渲染流⽔线流程图

  • 下面是硬件层角度的可编程渲染流⽔线流程图


    image.png

GPU图形渲染管线

image.png
  • 光栅化操作图
    • 这⼀步我们将会对其进行各种测试,而假如它通过了所有的测试,片段将会显示在屏幕上


      image.png
    • 抖动显示:⼀种能够使用较少的颜色种类模拟较多颜色的显示模式

  • 几何处理阶段
    • 几何阶段主要负责大部分多边形操作和顶点操作,包括顶点着色、坐标变换、生成图元、投影、裁剪、屏幕映射等过程,其中顶点着色、坐标变换由顶点着色器完成
      • 顶点着色:顾名思义就是顶点着色,通过顶点着色器对顶点进行渲染

      • 坐标变换:旋转、平移、缩放等方式

      • 生成图元:索引数组等方式来进行生成图形


        image.png
      • 投影分为两种:透视投影、正面投影


        image.png
      • 裁剪:仅保留视景体内部的图元进行渲染


        image.png
      • 屏幕映射:这个阶段是不可配置也不可编程的。主要用来实现图元的坐标转换到屏幕坐标

三维坐标转变为二维屏幕坐标的过程

  • MC是建模坐标系,WC是世界坐标系,VC是观察坐标系,PC是投影坐标系,NPC是规格化投影坐标系,DC是设备坐标系


    image.png
  • 思考:为什么需要对三维空间的顶点进行坐标空间转换?

    • 因为我们所获取的三维空间顶点坐标是基于三维的,我们的屏幕是平面空间,所以需要对维度,包括模型空间、视图空间、观察空间和屏幕空间进行转换

坐标系详细概念

  • 世界坐标系:坐标系统主要用于计算机图形场景中的所有图形对象的空间定位和定义
  • 局部坐标系:独⽴于世界坐标系来定义物体⼏几何特性
  • 观察坐标系: 观察坐标系通常是以视点的位置为原点,通过用户指定的⼀个向上的观察向量来定义整个坐标系统,观察坐标系主要用于从观察者的⻆度对整个世界坐标系内的对象进⾏重新定位和描述,从而简化几何物体在投影面的成像的数学推导和计算
  • 投影坐标系:物体从世界坐标描述转换到观察坐标后,可将三维物体投影到二维表面上,即投影到虚拟摄像机的胶⽚上,这个过程就是投影变换。以胶片中心为参考原点的空间坐标系称为投影坐标系,物体在投影坐标系中的坐标称为投影坐标。
  • 设备坐标系:是图形设备上采⽤的与具体设备相关的坐标系。设备坐标系一般采用整数坐标,其坐标范围由具体设备的分辨率决定。设备坐标系上的⼀个点一般对应图形设备上的一个像素。由于具体设备的限制,设备坐标系的坐标范围一般是有限的。
  • 规格化设备坐标系: 是为了避免设备相关性⽽而定义的⼀种虚拟的设备坐标系。规格化坐标系的坐标范围一般从0到1,也有的是从-1到+1。采用规格化设备坐标系的好处是屏蔽了具体设备的分辨率,使得图形处理能够尽量避开对具体设备坐标的考虑。实际图形处理时,先将世界坐标转换成对应的规格化设备坐标,然后再将规格化设备坐标映射到具体的设备坐标上去。
  • 屏幕坐标系统也称设备坐标系统,它主要用于某一特殊的计算机图形显示设备(如光栅显示器)的表面的点的定义,在多数情况下,对于每一个具体的显示设备,都有一个单独的坐标系统,在定义了成像窗口的情况下,可进一步在屏幕坐标系统中定义称为视图区(view port)的有界区域,视图区中的成像即为实际所观察到的。

相关文章

网友评论

      本文标题:OpenGL ES学习之路(4.0) 基本图形硬件流⽔线设计与具

      本文链接:https://www.haomeiwen.com/subject/tvxneqtx.html