使用opengl显示3D点
Display 3D point using opengl
简单地说,我只是想显示一个 3d
点,但没有显示!
如何显示?下面的代码有什么问题,有人可以帮忙吗?
初始化:
void init(void)
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glOrtho(-200, 0.0, -50, 100, 70, 300);
}
显示:
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glPointSize(2);
glBegin(GL_POINTS);
glVertex3f(-120.0, 25.0, 0.0);
glEnd();
glutSwapBuffers();
}
重塑:
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei)w, (GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(65.0, (GLfloat)w / (GLfloat)h, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(-120, 25, 0.0, -120, 25, 150, 0, 1, 0);
}
在 reshape
函数中,您分别设置了 1.0 和 20.0 的近平面和远平面:
gluPerspective(65.0, (GLfloat)w / (GLfloat)h, 1.0, 20.0);
所有不在近平面和远平面之间的几何体都被剪裁。
这意味着从点到视点(眼睛坐标)的 z 距离必须在 1.0 到 20.0 的范围内。
该点的z坐标为0.0:
glVertex3f(-120.0, 25.0, 0.0);
视点(相机)的z坐标也是0.0(gluLookAt
的第三个参数):
gluLookAt(-120, 25, 0.0, -120, 25, 150, 0, 1, 0);
这导致视点(眼睛)与点之间的距离为0-0 = 0
,并且点被剪裁。
要解决这个问题,要么你必须改变点的z坐标:
glVertex3f(-120.0, 25.0, 5.0);
或观点:
gluLookAt(-120, 25, -5.0, -120, 25, 150, 0, 1, 0);
简单地说,我只是想显示一个 3d
点,但没有显示!
如何显示?下面的代码有什么问题,有人可以帮忙吗?
初始化:
void init(void)
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glOrtho(-200, 0.0, -50, 100, 70, 300);
}
显示:
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glPointSize(2);
glBegin(GL_POINTS);
glVertex3f(-120.0, 25.0, 0.0);
glEnd();
glutSwapBuffers();
}
重塑:
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei)w, (GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(65.0, (GLfloat)w / (GLfloat)h, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(-120, 25, 0.0, -120, 25, 150, 0, 1, 0);
}
在 reshape
函数中,您分别设置了 1.0 和 20.0 的近平面和远平面:
gluPerspective(65.0, (GLfloat)w / (GLfloat)h, 1.0, 20.0);
所有不在近平面和远平面之间的几何体都被剪裁。
这意味着从点到视点(眼睛坐标)的 z 距离必须在 1.0 到 20.0 的范围内。
该点的z坐标为0.0:
glVertex3f(-120.0, 25.0, 0.0);
视点(相机)的z坐标也是0.0(gluLookAt
的第三个参数):
gluLookAt(-120, 25, 0.0, -120, 25, 150, 0, 1, 0);
这导致视点(眼睛)与点之间的距离为0-0 = 0
,并且点被剪裁。
要解决这个问题,要么你必须改变点的z坐标:
glVertex3f(-120.0, 25.0, 5.0);
或观点:
gluLookAt(-120, 25, -5.0, -120, 25, 150, 0, 1, 0);