OpenGL:为什么具有相同X坐标的球体在输出中不是直线?

时间:2014-08-02 11:02:37

标签: c++ opengl

我正在开发一个C ++项目,它是用MFC模板编写的; 使用OpenGL库我在特殊坐标中绘制球体。我使用glTranslatef函数转到这个特殊坐标,但是当我绘制具有相同X坐标的两个球体时,看起来它们的x有所不同。

例如,当我在(x,y,z):(1,1,0)中绘制两个球体时,(x,y,z):(1,2,0)输出为:

the picture for my output

这个观点来自上面: enter image description here

这是我绘制球体的功能:

void MYGLView::DrawSphere(double X_position, double Y_Position, double Z_Position,
    GLdouble radius, int longitudeSubdiv, int latitudeSubdiv,
    double Red, double Green,double Blue)
{
    gluQuadricDrawStyle(m_quadrObj, GLU_FILL);

    float shininess = 64.0f;
    glPushMatrix();
    glTranslatef(X_position,Y_Position,Z_Position);
    glColor3f(Red,Green,Blue);
    gluSphere(m_quadrObj,radius,longitudeSubdiv,latitudeSubdiv);
    //glTranslatef(-3,0,0);
    glFlush();
    glPopMatrix();
}

你能告诉我在哪里弄错了吗?

1 个答案:

答案 0 :(得分:3)

您的相机略微向下转动。因此,所有垂直线都有一个消失点。如果您希望屏幕上的所有垂直线都平行,则不允许您的相机向下倾斜。或者,您可以使用平行投影,其中所有在世界中平行的线在图像中保持平行。