OpenGL学习(二)一些名词解析

1. OpenGL & OpenGL ES

  • OpenGL
    是一个跨编程语言、跨平台的编程图形程序接口,它将计算机的资源抽象成为一个个OpenGL的对象,对这些资源的操作抽象为一个个的OpenGL指令
  • OpenGL ES
    OpenGL三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计,去除了不必要和性能较低的API接口

2. OpenGL 上下文

在应用程序调用任何OpenGL的指令之前,需要安排首先创建一个OpenGL的上下文,这个上下文是一个非常庞大的状态机,保存了OpenGL中的各种状态,这也OpenGL指令执行的基础

3. OpenGL 状态机

状态机是一个抽象的模型,表示一组状态变量的集合,OpenGL使用了一种状态模型(或称状态机)来追踪所有的OpenGL状态变量,当一个状态值被设置之后,它就一直保持这个状态,直到其他函数对它进行修改为止

假设当我们想告诉OpenGL去画线段而不是三角形的时候,我们通过改变一些上下文变量来改变OpenGL状态,从而告诉OpenGL如何去绘图。一旦我们改变了OpenGL的状态为绘制线段,下一个绘制命令就会画出线段而不是三角形

4. 渲染

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

5. 顶点数组(VertexArray)和顶点缓冲区(VertexBuffer)
  • 顶点
    绘制一个图形时,顶点位置的数据
  • 顶点数组
    调用绘制方法的时候,直接从内存中传入顶点数据,这部分数据之前是存储在内存中的,称为顶点数组
  • 顶点缓冲区
    绘制更高效的方法是,提前分配一块显存,顶点数据存储到显存当中,这部分显存称为顶点缓冲区

6. 管线

  • 管线
    OpenGL下渲染图像时,会经历一个个节点,这样的操作可以理解为管线,处理数据的时候是按照一个固定的顺序来的
  • 固定管线/存储着色器
    早期OpenGL版本,封装了很多种着色器程序块,来帮助开发者完成图形的渲染,开发者只需要传入响应的参数,就能快速完成图形的渲染

7. 着色器

  • 着色器程序Shader
    OpenGL在实际调用绘制函数之前,还需要指定一个由shader编译成的着色器程序
  • 顶点着色器(VertexShader)
    一般用来处理图形每个顶点变换(旋转/平移/投影等)
    顶点着色器是逐顶点运算的,每个顶点数据都会执行一次顶点着色器,是并行的
  • 片元着色器(FragmentShader)
    一般用来处理图形中每个像素点颜色计算和填充
    片段着色器是逐像素运算的,每个像素都会执行一次片段着色器,是并行的
  • OpenGL绘制过程
    顶点着色器对传入的顶点数据进行运算
    通过图元装配,将顶点转换为图元
    进行光栅化,将图元这种矢量化图像,转换为栅格化数据
    将栅格化数据传入片段着色器中进行运算
    片段着色器会对栅格化数据中的每个像素进行运算,并决定像素的颜色

7. GLSL(OpenGL Shading Language)

OpenGL着色语言,GLSL的着色器代码分两个部分,Vertex Shader(顶点着色器)和 Fragment(片段着色器)

8. 光栅化

把顶点数据转换为片元的过程,片元中的每一个元素对应帧缓冲区中的一个像素
是一种将几何图形转变为二维图像的过程,光栅化过程产生的是片元

9. 纹理

可以理解为图片,渲染图形时需要在其编码填充图片,为了使场景更加逼真,

10. 混合

11.变换矩阵(Transformation)

图形发生平移、缩放、旋转变换需要使用变换矩阵

12.投影矩阵(Projection)

将3D坐标转换为二维屏幕坐标

11. 渲染上屏/交换缓冲区(SwapBuffer)

你可能感兴趣的:(OpenGL学习(二)一些名词解析)