【发布时间】:2017-09-02 10:59:00
【问题描述】:
我正在关注 Sumanta Guha 第二版的Computer Graphics Through OpenGL, 2nd Edition,在第 35 页中,它说
将(原始)square.cpp 的第一个顶点从
glVertex3f(20.0, 20.0, 0.0)提升到glVertex3f(20.0, 20.0, 1.5)会导致正方形——实际上,不再是正方形的新图形——被剪裁。相反,如果第二个顶点从glVertex3f(80.0, 20.0, 0.0)升高到glVertex3f(80.0, 20.0, 1.5),那么图形也会被剪裁,但与第一个顶点升高时的情况截然不同。为什么?结果不应该是对称的吗?提示:OpenGL 在对多边形进行三角剖分后将其绘制为所谓的三角形扇形,多边形的第一个顶点是扇形的中心。例如,图 2.16 中的扇形由三个围绕顶点 v0 的三角形组成。
对应代码的样子
glVertex3f(20.0, 20.0, 0.0);
glVertex3f(80.0, 20.0, 0.0);
glVertex3f(80.0, 80.0, 0.0);
glVertex3f(20.0, 80.0, 0.0);
如果我只将第一个顶点的 z 轴设置为 1.5f,我会得到这样的输出,
如果我只将第二个顶点的 z 轴设置为 1.5f,我会得到以下输出
在后一种情况下,我可以理解为什么由于剪辑而得到该输出,但我不明白为什么在前一种情况下得到该输出。
【问题讨论】: