一、OpenGL 常见专业名词解析

2020-07-05  本文已影响0人  读月鱼_Harlan

图形API 简介

  1. OpenGL (Open Graphics Library) 是⼀个跨编程语言、跨平台的编程图形程序接口,它将计算机的资源抽象称为一个个OpenGL的对象,对这些资源的操作抽象为一个个的OpenGL指令。OpenGL用于PC端的图形图像渲染处理。
  2. OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计,去除了许多不必要和性能较低的API接口。OpenGL ES用于iOS和安卓的图形图像渲染处理。
  3. DirectX 是由很多API组成的,DirectX并不是一个单纯的图形API。最重要的是DirectX是属于 Windows上一个多媒体处理框架,并不支持Windows以外的平台,所以不是跨平台框架。按照性质分类,可以分为四⼤大部分:显示部分、声音部分、输入部分和⽹络部分。
  4. Metal 是 Apple为游戏开发者推出的新的平台技术,该技术能够为 3D 图像提高 10 倍的渲染性能。Metal 是Apple为了解决3D渲染而推出的框架。替代OpenGL ES原因:1.不可能一直把非常重要的渲染核心框架使用第三方;2.调用GPU来进行运算(GPU并发运算,编码解码,识别,大量并发运算。2018->入口,让你调用GPU来定义事情;Metal入口:借助Metal调度GPU来给你做运算)。

OpenGL 上下文 ( context )

OpenGL 状态机

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

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

类推到OpenGL 中来,可以这么理解:

  1. OpenGL可以记录⾃己的状态(如当前所使用的颜色、是否开启了混合功能等)
  2. OpenGL可以接收输入(当调用OpenGL函数的时候,实际上可以看成 OpenGL在接收我们的输入),如我们调⽤glColor3f,则OpenGL接收到 这个输⼊后会修改自己的“当前颜色”这个状态;
  3. OpenGL可以进入停止状态,不再接收输入。在程序退出前,OpenGL总 会先停⽌工作的。

渲染

将图形/图像数据转换成2D空间图像操作叫做渲染(Rendering).

顶点数组( VertexArray ) 、顶点缓冲区( VertexBuffer )

着色器程序Shader

管线

在OpenGL下渲染图形,就会经历一个一个节点,⽽这样的操作可以理解管线。大家可以想象成流水线,每个任务类似流水线般执行任务之间有先后顺序。管线是一个抽象的概念,之所以称之为管线是因为显卡在处理数据的时候是按照一个固定的顺序来的,而且严格按照这个顺序。就像⽔从⼀根管子的一端流到另⼀端,这个顺序是不变的。

固定管线/存储着色器

着色器

顶点着色器(VertexShader)

片段着色器(FragmentShader)

GLSL (OpenGL Shading Language)

OpenGL着色语言(OpenGL Shading Language)是⽤来在OpenGL中着色编程的语言,也即开发人员写的短小的自定义程序,他们是在图形卡的GPU (Graphic Processor Unit图形处理理单元)上执⾏的,代替了固定的渲染管 线的一部分,使渲染管线中不同层次具有可编程性。⽐如:视图转换、投影转换等。GLSL(GL Shading Language)的着⾊器代码分成2个部分: Vertex Shader(顶点着⾊器)和Fragment(⽚元着⾊器)。

光栅化Rasterization

纹理

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

混合(Blending)

在测试阶段之后,如果像素依然没有被剔除,那么像素的颜色将会和帧缓 冲区中颜色附着上的颜色进⾏混合,混合的算法可以通过OpenGL的函数进 ⾏指定。但是OpenGL提供的混合算法是有限的,如果需要更加复杂的混合算法,一般可以通过像素着色器进⾏实现,当然性能会比原⽣的混合算法 差一些。

变换矩阵(Transformation)

例如图形想发⽣生平移、缩放、旋转变换,就需要使⽤用变换矩阵、投影矩阵投。

影矩阵(Projection)

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

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

上一篇 下一篇

猜你喜欢

热点阅读