乐趣区

OpenGL常用术语知多少

1. 什么是 OpenGL

OpenGL 是一个跨语言、跨平台的编程图形程序接口,它将计算机的资源形象为一个个的 OpenGL 的对象,对这些资源的操作形象为一个个 OpenGL 的指令。它的移植性高,并且速度十分快。

2. OpenGL 状态机

状态机是一种形象的模型,示意一组状态变量的汇合。它形容了一个对象在其生命周期内所经验的各种状态,状态之间的转变,产生转变的动因、条件以及转变中所执行的流动。
比方:色彩、纹理坐标、源因子和指标因子、光源的各种参数,这些都是状态,另外还有:是否开启了光照,是否开启了纹理,是否开启了混合,是否开启了深度测试等等。OpenGL 会放弃这些状态,除非咱们调用函数来扭转这些状态。

3. OpenGL 上下文

OpenGL 上下文是一个十分形象的概念,能够了解为一个蕴含了所有 OpenGL 状态的对象。在咱们调用任何 OpenGL 指令前,都须要先创立一个上下文,这个上下文记录了 OpenGL 渲染所须要的所有信息以及状态,所以上下文也是一个宏大的状态机。

4. 渲染

所谓的渲染,就是将数学和图形数据转换成 3D 空间图像的操作叫做渲染(Rendering)。

5. 管线

在 OpenGL 中,3D 坐标转为 2D 坐标的处理过程是由 OpenGL 的图形渲染管线(Graphics Pipeline,大多译为管线,实际上指的是一堆原始图形数据途经一个输送管道,期间通过各种变动解决最终呈现在屏幕的过程)治理的。
图形渲染管线能够被划分为两个次要局部:
**(1)第一局部把你的 3D 坐标转换为 2D 坐标。
(2)第二局部是把 2D 坐标转变为理论的有色彩的像素。**

   在 OpenGL 下渲染图形,就会经验一个一个节点,而这样的操作能够了解为管线。大家能够设想成流水线,每个工作相似流水线般执行。工作之间有先后顺序。管线是一个形象的概念,之所以称之为管线是因为显卡在解决数据的时候是依照一个固定的程序来的,而且严格依照这个程序,这个程序就是渲染流程,而管线指的是这个过程。

6. 固定管线 / 存储着色器

OpenGL 本身为开发者封装了很多着色器 (shader) 程序,开发者只须要调用 API 即可,不须要关怀外部的实现过程,而这些封装好的程序(函数或办法)即为固定管线。
在固定管线下,应用固定存储着色器,固定存储着⾊器由 GLTools 的 C ++ 类 GLShaderManager 治理,它们可能满⾜进⾏根本渲染的根本要求。
然而因为 OpenGL 的应用场景十分丰盛,固定管线或存储着色器无奈实现每一个业务,这时将相干局部凋谢成可编程。

7. 着色器程序(Shader)

顾名思义,着色器程序就是一个程序代码,在 OpenGL 调用绘制函数之前,须要制订一个着色器,在固定管线下,这个着色器曾经是封装好的了,在可编程的状况下,则须要程序员本人编写着色器程序。
常见的着色器有:

  • 顶点着色器 (VertexShader)
  • 片元着色器(FragmentShader)/ 像素着色器 (PixelShader)
  • 几何着色器
  • 曲面细分着色器

在 OpenGL ES 3.0 后,可编程仍然只反对了顶点着色器和片段着色器这两个最根底的着色器。

7.1 顶点着色器(VertexShader)

顶点着色器是一组指令代码,这组指令代码在顶点被渲染时执行,个别用来解决图形每个顶点变换 (旋转 / 平移 / 投影等)。
顶点着色器是 OpenGL 中用于计算顶点属性的程序。顶点着色器是逐顶点运算的程序,也就是说每个顶点数据都会执行一次顶点着色器,当然这是并行的,并且顶点着色器运算过程中无法访问其余顶点的数据。
一般来说典型的须要计算的顶点属性次要包含顶点坐标变换、逐顶点光照运算等等。顶点坐标由本身坐标系转换到归一化坐标系的运算,就是在这里产生的。

7.2 片元着色器(FragmentShader)

个别用来解决图形中每个像素点色彩的计算和填充。
片段着色器是 OpenGL 中用于计算片段(像素)色彩的程序。片段着色器是逐像素运算的程序,也就是说每个像素都会执行一次片段着色器,这个过程也是并行的。

7.3 着色器渲染过程

8. 光栅化(Rasterrization)

又名栅格化或者像素化,其实就是把矢量图转化成像素点的过程。
咱们都晓得三维物体是由点线面形成的,将这些点线面转化成屏幕上的像素点,这个过程就是光栅化。
该过程包含了两局部工作:

  1. 决定窗口坐标中哪些整型栅格区域被根本图元占用;
  2. 调配一个色彩值和一个深度值到各个区域。

光栅化过程产生的是片元。

9. 纹理(texture)

在 OpenGL 中,咱们所说的纹理能够了解成是一张图片,在渲染图形的时候,须要将图片贴在其外表,使其看起来更真切。

10. 混合(Blending)

混合就是将源色和指标色彩通过某种形式混合生成特效的技术,艰深一点就是将两种色彩通过某种算法生成非凡的成果。混合通常用来绘制通明或者半透明的物体。

11. 变换矩阵(Transformation)

如果图形想产生平移、缩放、旋转变换,就须要应用变换矩阵。

12. 投影矩阵(Projection)

用于将 3D 坐标转换为二维屏幕坐标,理论线条也将在二维坐标下进行绘制。

13. 2D 笛卡尔坐标系

14. 3D 笛卡尔坐标系

15. 视口


16. 投影形式

在 OpenGL 中,次要有两种投影形式,第一种是正投影或叫平行投影,第二种是透视投影。
在应用正投影的时候,须要筹备一个正方形或者长方形的视景体(屏幕)。视景体之外的任何物体都不会被绘制,而是所有理论物体的大小和视景体内的大小都雷同,无论远近。
在应用透视投影的时候,远处的物体看上去会比近处的物体小一些,合乎近大远小的原理。越凑近视景体,投影越靠近物体尺寸,反之,越远,则越小于物体自身的尺寸。

退出移动版