OpenGL基础名词解析

246 阅读3分钟

状态机

状态机就是一种存在于理论中的机器,它具有以下的特点:

  1. 它有记忆的能力,能够记住自己当前的状态
  2. 它可以接收输入,根据输入的内容和自己的状态,修改自己的状态,并且可以得到输出。
  3. 当它进入某个特殊的状态(停机状态)的时候,它不再接收输入,停止工作。

OpenGL是一个状态机,它保持自身的状态,除非用户输入一条命令让它改变状态。

对OpenGL来说,颜色、纹理坐标、源因子和目标因子、光源的各种参数,等等,这些都是状态; 此外,“是否启用了光照”、“是否启用了纹理”、“是否启用了混合”、“是否启用了深度测试”等等,这些也都是状态。

上下文(context)

在应⽤程序调⽤任何OpenGL的指令之前,需要安排⾸先创建⼀个OpenGL的 上下⽂。这个上下⽂是存储渲染信息的一个数据结构,保存了OpenGL中的各种状态,这也是OpenGL指令执⾏的基础。

切换上下⽂往往会产⽣较⼤的开销,但是不同的绘制模块,可能需要使⽤完全独⽴的状态管理。因此,可以在应⽤程序中分别创建多个不同的上下⽂,在不同线程中使⽤不同的上下⽂,上下⽂之间共享纹理、缓冲区等资源。这样的⽅案,会⽐反复切换上下⽂,或者⼤量修改渲染状态,更加合理⾼效的。

渲染(render)

将图形/图像数据转换成3D空间图像操作叫做渲染。

顶点数组 (VertexArray)

OpenGL中的图像都是由图元组成。在OpenGLES中,有3种类型的图 元:点、线、三⻆形。 顶点指的是我们在绘制⼀个图形时,它的顶点位置数据,如果这部分数据存储在内存当中,称为顶点数组。

顶点缓冲区 (VertexBuffer)

提前分配⼀块显存,将顶点数据预先传⼊到显存当 中。这部分的显存,就被称为顶点缓冲区。

管线/渲染管线()

所谓的管线,实际上就是渲染过程流水线,指的不是具体某一样东西,而是一个流程。

  • 固定管线/存储着色器 固定管线内部已经固化了一套完整的渲染流程,只需要开发者在CPU代码端输入渲染所需要的参数并指定特定的开关,就能完成不同的渲染。
  • 可编程管线 可编程渲染管线的OpenGLES版本必须由开发者自行实现渲染流程,否则无法绘制出最终的画面。

着色器(Shader)

  • 顶点着色器(VertexShader)处理每个顶点,将顶点的空间位置投影在屏幕上,即计算顶点的二维坐标。
  • 片元着色器(FragmentShader),⼀般⽤来处理图形中每个像素点颜⾊计算和填充,⽚元着⾊器是OpenGL中⽤于计算⽚段(像素)颜⾊的程序。⽚段着⾊器是 逐像素运算的程序,也就是说每个像素都会执⾏⼀次⽚元着⾊器,当然也 是并⾏的。

光栅化

光栅化其实是⼀种将⼏何图元变为⼆维图像的过程。如下图:

左边的圆圈是高速计算机有一个圆形,右边的圆圈是光栅化把圆形转换成可显示的像素点。

纹理

纹理可以理解为图⽚. ⼤家在渲染图形时需要在其编码填充图⽚,为了使得 场景更加逼真.⽽这⾥使⽤的图⽚,就是常说的纹理.但是在OpenGL,我们更加 习惯叫纹理,⽽不是图⽚。

混合

混合就是把两种颜色按某种规则混合起来得到新的颜色。