Отображение 3D-точки с помощью OpenGL - PullRequest
0 голосов
/ 14 октября 2018

Просто я просто пытаюсь показать 3d точку, но ничего не отображается на!

Как это показать?что не так в коде ниже, кто-нибудь может помочь?

init:

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);
    }

1 Ответ

0 голосов
/ 14 октября 2018

В функции 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 (3-й параметр 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); 
...