显示3D点

问题描述

我正在尝试使用opengl显示3d点(50,30,20),但注意在屏幕上显示。我该怎么解决

init:

void init()
{
    glClearColor(0.0,0.0,0.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(20.0,70.0,10.0,40.0,30.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
 

}

显示

void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3f(1.0,1.0,1.0);
    glPointSize();
    glBegin(GL_POINTS);
    glVertex3f(50.0,30.0,20.0);
    glEnd();
    glFlush();
    glutSwapBuffers();
}

解决方法

您的点被正交投影的近平面裁剪:

glOrtho(20.0,70.0,10.0,40.0,30.0);
glVertex3f(50.0,30.0,20.0);

OpenGL坐标系是右手系(请参见Right-hand rule)。在视图空间中,y轴指向上方,x轴指向右侧。由于z轴是x和y轴的Cross product,因此它指向视图之外。
因此,您必须沿负z轴在近平面和远平面之间移动点:

glVertex3f(50.0,20.0);

glVertex3f(50.0,-20.0);