OpenGL:无限远点的三角形

use*_*715 5 c++ opengl

我试图使用以下代码在OpenGL中渲染一个二维半平面:

void renderHalfplane(double *x, double *n)
{
  glPushMatrix();
  double theta = -360.0 * atan2(n[0], n[1])/(2.0*PI);

  glTranslated(x[0], x[1], 0);
  glRotated(theta, 0, 0, 1.0);

  glBegin(GL_TRIANGLES);
  glVertex4d(0.0, 0.0, 0.0, 1.0);
  glVertex4d(1.0, 0.0, 0.0, 0.0);
  glVertex4d(0.0,-1.0, 0.0, 0.0);
  glVertex4d(0.0, 0.0, 0.0, 1,0);
  glVertex4d(-1.0,0.0, 0.0, 0.0);
  glVertex4d(0.0,-1.0, 0.0, 0.0);
  glEnd();

  glPopMatrix();
}
Run Code Online (Sandbox Code Playgroud)

在这里,我使用齐次坐标在"无限远"处绘制具有两个顶点的三角形.

这段代码在我的计算机上就像一个魅力,但是用户报告说它在他们的计算机上没有正确呈现:而不是无限的半平面,他们看到两个(有限的)三角形.

我使用w坐标0未定义的行为?它只适用于某些版本的OpenGL吗?我尝试查看Khronos OpenGL规范,但找不到一个部分,其中解析了具有w坐标0的基元的渲染.

Ron*_*lic 1

我在我的机器(nVidia Quadro)上测试了它,它渲染正确。我发现将 W 坐标缩放到无穷大的代码示例(针对阴影体积)也可以正常工作。

我猜这是驱动程序问题还是此代码外部的问题?