代码之家  ›  专栏  ›  技术社区  ›  user168715

OpenGL:点在无穷远处的三角形

  •  5
  • user168715  · 技术社区  · 15 年前

    我尝试用以下代码在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();
    }
    

    这里我用齐次坐标画两个顶点在“无穷大”的三角形。

    这段代码在我的电脑上很有魅力,但是一个用户报告说它在他们的电脑上不能正确呈现:他们看到的不是无限的半平面而是两个(有限的)三角形。

    我是否使用了w坐标0未定义的行为?它是只在某些版本的OpenGL上工作的吗?我试着浏览了khronos opengl规范,但找不到一个使用w坐标0呈现原语的部分。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Ron Warholic    15 年前

    我在我的机器(Nvidia Quadro)上测试了这个,它渲染正确。我已经找到了代码示例(对于阴影体积),它可以将w坐标缩放到无穷大,也可以很好地工作。

    我想这是一个驱动程序问题,还是这段代码之外的问题?