OpenGL入门——专有名词记录

488 阅读5分钟

状态机

绘制3D图形是一项复杂的任务,对于一个特定的图形,有许多因素可能会影响它的绘制。比如:

对象是不是与背景混合?
要不要进行正面或背面剔除?
当前限制的是什么纹理?

我们将这类变量的集合称为管线的状态。状态机是一组状态变量的集合,每个状态变量可以有各种不同的值,或者只能可以打开或关闭。

当一个状态值被设置后,它就一直保持这个状态,知道其他函数对它进行修改为止。

参见:OpenGL超级宝典5P32


渲染

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

这个术语做动词使用时,指的是计算机创建三维图像是所经历的过程。

作为名词使用时,指的仅仅是最终的图像作品


渲染流程:

是一系列数据处理的过程,并且将应用程序的数据转换到最终渲染的图形。

参考:www.jianshu.com/p/c0e71b4c1…


顶点

我们用线条绘制一个放在一个平面上的立方体。这个立方体上的每一个角就叫做顶点。

vertices,单数为vertex

  • 顶点数组

顶点数据存储起来构成的数组。顶点数组存储在内存中,顶点数据是由GPU处理。

  • 顶点缓冲区

这个缓冲区不在内存中,在显卡显存中。缓冲区存储的内容也是顶点数据。


渲染管线

贴切翻译应该是渲染流水线。是指将数据从3D场景转换成2D图像,最终在屏幕上显示出来的总过程。

它分为几个阶段:

  • 应用阶段

主要是CPU与内存打交道。如:碰撞检测,计算好的数据(顶点坐标、法向量、纹理坐标、纹理)就会通过数据总线传给图形硬件。

  • 几何阶段

被称为”变换和光照阶段“。为了从3D场景转到2D场景,场景中的所有物体都需要转换到几个空间。每个空间都有自己的坐标系。

这些转换是通过一个空间的顶点转换到两一个空间的顶点来实现的。

  • 光栅阶段

矢量图形转换成像素点的过程


着色 Shader

通过沿着表面(在顶点之间)改变颜色值。


着色器

图形硬件上执行的单独程序,用来处理顶点和执行光栅化的任务。

着色器是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有输入和输出。

参考:www.jianshu.com/p/af8d2a83c…


光栅化

OenGL超级宝典:实际绘制或填充每个顶点之间的像素形成线段就叫做光栅化(Rasterization

理解:将顶点数据转为片元的过程或将几何图元变为二维图像的过程。

将点连接起来形成线?


纹理

一个纹理不过是一幅用来贴到三角形或多边形上的图片。

可以理解为一个位图。

位图就是一个像素数组,数组中的像素代表途中的一个点


混合

将不同的颜色混在一起


变换/投影

  • 变换矩阵

顶点可以通过变换矩阵(Transformation Matrix)的数据结构对顶点进行旋转。

  • 投影矩阵

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


视口

把绘图坐标映射到窗口坐标。

裁剪区域的宽度和高度很少正好与窗口的宽度和高度(以像素为单位)相匹配。因此,坐标系统必须从逻辑笛卡尔坐标映射到物理屏幕像素坐标。这个映射就是通过视口(ViewPort)的设置来指定的。

视口就是窗口内部用于绘制裁剪区域的客户区域。视口简单地把裁剪区域映射到窗口中的一个区域。

通常,视口被定义为整个窗口,但这并非必须。

openGL投影方式

  • 正投影【平面图形】无远近大小区分
  • 透视投影【立体图形】,有个投影中心,观察者

片段

GPU需要遍历2D图像,并进行转换,将数据转化为大量”像素候选“即所谓的片段(Fragment,可以理解为像素原型,但绝不是指一大片像素)。

片段是包含位置、颜色、深度、纹理、坐标等属性的数据结构。


顶点/图元/片元/像素

  • 顶点到图元

几何顶点被组合为图元(点,线段或多边形),然后图元被合并为片元,最后片元被转换为帧缓存中的像素数据。

  • 图元经由以下几步转为片元

    1. 适当裁剪, 颜色和纹理数据也相应作出调整
    2. 相关坐标被转换为窗口坐标
    3. 光栅化将裁剪好的图元转换为片元
  • 片元到像素

    1. 像素所有权检测
    2. 裁剪检测
    3. Alpha检测
    4. 模板检测
    5. 深度检测
    6. 融合
    7. 抖动
    8. 逻辑操作

深度测试/深度缓存

深度其实就是该像素点在3d世界中距离摄像机的距离。

深度缓存中存储着每个像素点(绘制在屏幕上的)的深度值。

深度测试:据定了是否绘制较远的像素点(或较近的像素点),通常选用较近的,而较远优先能实现透视的效果。


本文用于学习分享,转载请注明出处!

欢迎评论一起完善知识体系!