在计算机图形学中,为什么我们需要知道多边形的后面和前面是不同的?
答案 0 :(得分:2)
三角形的面孔可能很重要有几个原因。
如果你绘制一个立方体,你最多只能看到它的三面。正面三面将阻挡您对后三面的视野。虽然depth testing会阻止绘制对应于背面的碎片......为什么要这么麻烦?为了进行深度测试,您必须光栅化这些三角形。对于那些不会被人看到的三角形而言,这需要做很多工作。
因此,我们有一种方法可以根据它们的面孔来剔除三角形,在对它们执行光栅化之前。虽然顶点处理仍将在这些三角形上完成,但在进行光栅化等重量级操作之前,它们将被丢弃。
通过面部剔除,您可以消除闭合网格中大约一半的三角形。这是一个相当不错的性能节省。
叶子是一个薄的物体,因此您可以将其渲染为一个扁平多边形,而不进行面部剔除。但是,两侧的叶子看起来不一样。顶部通常比底部暗很多。
你可以通过在渲染叶子时发送两种颜色来实现这种效果;一个用于顶部,一个用于底部。在片段着色器中,您可以检测生成片段的多边形的哪一侧by looking at the built-in variable gl_FrontFacing
。该布尔值可用于选择要使用的颜色。
如果你想进行更复杂的双面渲染,它甚至可以用来选择要采样的纹理。