OpenGL:绘制多边形时,如果第一个顶点位于屏幕空间之外(三角扇)

onu*_*tas 2 c++ opengl macos

我正在关注计算机图形通过OpenGL,第2版由Sumanta Guha第二版,并在第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);
Run Code Online (Sandbox Code Playgroud)

如果我只将第一个顶点的z轴设置为1.5f,我得到这样的输出,

在此输入图像描述

如果我只将第二个顶点的z轴设置为1.5f,我会得到以下输出

在此输入图像描述

在后一种情况下,我可以理解为什么我因为削波而得到那个输出,但是我不明白为什么我在前一种情况下得到那个输出.

der*_*ass 5

您正在绘制两个三角形:A,B,C和A,C,D.

如果更改其中z一个顶点,则两个三角形将不再位于同一平面中.

在第一种情况下,您更改A会影响两个trianges.在第二种情况下,您正在更改B,这将仅影响第二个三角形.

请注意,您使用的代码非常过时,并且无法在OpenGL的现代核心配置文件中工作,其中"现代"意味着:十年之后.