我在Sumanta Guha第二版的计算机图形学通过OpenGL,第2版之后,在第35页,它说
将(原始)square.cpp的第一个顶点从
0x00000400
升高到glVertex3f(20.0, 20.0, 0.0)
会导致正方形 - 实际上,不再是正方形的新图形 - 被剪裁。相反,如果将第二个顶点从glVertex3f(20.0, 20.0, 1.5)
提升到glVertex3f(80.0, 20.0, 0.0)
,那么该数字也会被剪裁,但与第一个顶点的提升方式截然不同。为什么?对称性结果不应该相似吗?提示:OpenGL在将它们三角形化为三角形之后绘制多边形,其中多边形的第一个顶点是扇形的中心。例如,图2.16中的扇形由顶点v0周围的三个三角形组成。
其中相应的代码如下所示
glVertex3f(80.0, 20.0, 1.5)
如果我只将第一个顶点的z轴设置为1.5f,我得到这样的输出,
如果我只将第二个顶点的z轴设置为1.5f,我会得到以下输出
在后一种情况下,我可以理解为什么因为裁剪而得到那个输出,但是我不明白为什么我在前一种情况下得到那个输出。
答案 0 :(得分:5)
您正在绘制两个三角形:A,B,C和A,C,D。
如果更改其中一个顶点的z
,则两个三角形将不再位于同一平面内。
在第一种情况下,您更改A会影响两个trianges。在第二种情况下,您正在更改B,这将仅影响第二个三角形。
请注意,您正在使用的代码非常过时,将无法在OpenGL的现代核心配置文件中运行,其中"现代"意味着:自十年。