iOS视觉

二 OpenGL介绍及专有名词解析

2020-08-04  本文已影响0人  王俏

1. 简介

2. 功能:实现图形的底层渲染

3. 本质

4. 名词解析

  1. 状态机

描述一个对象在其⽣命周期内所经历的各种状态,状态间的 转变,发生转变的动因,条件及转变中所执⾏的活动。或者说,状态机是一种⾏为,说明对象在其生命周期中响应事件所经历的状态序列以及对哪些状态事件的响应。因此具有以下特点:

* 有记忆功能,能记住其当前的状态
* 可以接收输⼊,根据输入的内容和自己的原先状态,修改自⼰当前状态,并且可以有对应输出
* 当进⼊特殊状态(停机状态)的时候,便不再接收输入,停止工作;
  1. OpenGL状态机

OpenGL可以记录状态(如当前所使用的颜色、是否开启了混合功能等)

OpenGL可以接收输入(当调⽤用OpenGL函数的时候,可以看成OpenGL在接收输入),如调用glColor3f,则OpenGL接收到这个输⼊后会修改⾃己的“当前颜色”这个状态;

OpenGL可以进⼊停止状态,不再接收输入。在程序退出前,OpenGL总 会先停止工作

开发人员自定义程序,在图形卡的GPU (Graphic Processor Unit图形处理单元)上执行的, 代替了固定的渲染管线的一部分,使渲染管线中不同层次具有可编程性。比如:视图转换、投影转换等。
GLSL(GL Shading Language)的着⾊器代码分成2个部分: Vertex Shader(顶点着⾊器) 和Fragment Shader(片段着⾊器)

把物体的数学描述以及与物体相关的颜色信息转换为屏幕上⽤于对应位置的像素及用于填充像素的颜色,这个过程称为光栅化

两部分工作:

  1. 确定绘制区域:把物体的数学描述以及与物体相关的颜⾊信息转换为屏幕上用于对应位置的像素
  2. 填充颜色

在渲染图形时需要编码填充图片,这里使用的图片,就是纹理,纹理的存储格式.tag

测试阶段之后,像素的颜⾊会和帧缓冲区中颜色进⾏混合形成混合色,混合的算法可以通过OpenGL的函数进⾏指定。

OpenGL提供的混合算法是有限的,如果需要更加复杂的混合 算法,一般可以通过像素着⾊器进⾏实现,性能会比原生的混合算法差⼀些.

5. 投影方式 : 正投影和透视投影

6. 坐标系和坐标变换

标准化设备坐标系:

OpenGL每次着色后,可见顶点都为标准化设备坐标(Normalized Device Coordinate,NDC),顶点(x,y,z)的取值都在-1到1之间,超出这个范围顶点不可见

从物体的坐标变换到屏幕上的二维坐标和像素,总共要经历5个不同的坐标系:局部空间/物体空间,世界空间,观察者空间/视觉空间,剪裁空间,屏幕空间,需要用的变换矩阵有模型,观察,投影,具体流程如下:

image

OpenGL只定义了裁剪坐标系、规范化设备坐标系和屏幕坐标系,而局部坐标系(模型坐标系)、世界坐标系和照相机坐标系都是为了方便用户设计而自定义的坐标系,关系如下图:


image

用户自定义变换包括模型变换、视变换、投影变换,在顶点着色器中完成
OpenGL自动执行的变换包括:透视除法、视口变换,在顶点着色器处理后的阶段完成

7. 着色器的渲染流程

image
上一篇下一篇

猜你喜欢

热点阅读