我正在开发一个C ++项目,它是用MFC模板编写的;
使用OpenGL库我在特殊坐标中绘制球体。我使用glTranslatef
函数转到这个特殊坐标,但是当我绘制具有相同X坐标的两个球体时,看起来它们的x
有所不同。
例如,当我在(x,y,z):(1,1,0)
中绘制两个球体时,(x,y,z):(1,2,0)
输出为:
这个观点来自上面:
这是我绘制球体的功能:
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();
}
你能告诉我在哪里弄错了吗?
答案 0 :(得分:3)
您的相机略微向下转动。因此,所有垂直线都有一个消失点。如果您希望屏幕上的所有垂直线都平行,则不允许您的相机向下倾斜。或者,您可以使用平行投影,其中所有在世界中平行的线在图像中保持平行。