2.2 Primitive Assembly && Triangle setup

文章内容源自《GPU编程与CG语言之阳春白雪下里巴人》,因笔者读书易中途放弃,遂每读一章节,将其移至平台,以此作为对自己读书的勉励。笔者用粗体斜体 标注了关键词句,望感兴趣的读者们一起学习共勉。猛戳这里查看更多!

2.2 Primitive Assembly && Triangle setup

Primitive Assembly,图元装配,即将顶点根据 primitive(原始的连接关系),还原出网格结构。网格由顶点索引组成,在之前的流水线中是对顶点的处理,在这个阶段是根据索引将顶点链接在一起,组成线、面单元。之后就是对超出屏幕外的三角形进行裁剪,想象一下:一个三角形其中一个顶点在画面外,另外两个顶点在画面内,这时我们在屏幕上看到的就是一个四边形。然后将该四边形切成两个小的三角形。

此外还有一个操作涉及到三角形的顶点顺序(其实也就是三角形的法向量朝向),根据右手定则来决定三角面片的法向量,如果该法向量朝向视点(法向量与到视点的方向的点积为正),则该面是正面。一般是顶点按照逆时针排列。如果该面是反面,则进行背面去除操作(Back-face Culling)。在 OpenGL 中有专门的函数 enable 和 disable 背面去除操作。所有的裁剪剔除计算都是为了减少需要绘制的顶点个数。

附:在 2.2 和 2.3 节都提到了裁减的概念,实际裁减是一个较大的概念,为了减少需要绘制的顶点个数,而识别指定区域内或区域外的图形部分的算法都称之为裁减 。裁减算法主要包括:视域剔除(View Frustum Culling)、背面剔除 (Back-Face Culling)、遮挡剔除(Occlusing Culling)和视口裁减等。

处理三角形的过程被称为 Triangle Setup。到目前为止,我们得到了一堆在屏幕坐标上的三角面片,这些面片是用于做光栅化的(Rasterizing)。

你可能感兴趣的:(2.2 Primitive Assembly && Triangle setup)