Как изменить угол обзора в OpenGL?

Мне нужно создать 3D-куб, и пока я создал все вершины, но когда я запускаю программу, я вижу куб (или то, что я надеюсь, куб, я не могу сказать) только с одной стороны, поэтому похоже на квадрат. Я хочу знать, как посмотреть на свой куб сверху, чтобы проверить, действительно ли он выглядит так, как я хочу.

Я создал 24 вершины с помощью glVertex3f, но, как я уже сказал, я не могу сказать, куб это или нет, потому что я не могу смотреть на него под углом, отличным от угла по умолчанию.

Я попытался загрузить GLM, но я очень запутался в том, как, если вообще, использовать это, чтобы изменить перспективу просмотра.

glEnable(GL_DEPTH_TEST);
    // Loop until the user closes the window
    while (!glfwWindowShouldClose(window))
    {
        // Render here
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glBegin(GL_QUADS);
        glColor3f(0.0f, 1.0f, 0.0f);
        glVertex3f(0.5f, 0.5f, 0.5f);
        glVertex3f(-0.5f, 0.5f, 0.5f);
        glVertex3f(-0.5f, -0.5f, 0.5f);
        glVertex3f(0.5f, -0.5f, 0.5f);

        ... // Repeating drawing the vertices for each vertex of the cube

        glEnd();

        // Swap front and back buffers
        glfwSwapBuffers(window);

        // Poll for and process events
        glfwPollEvents();
    }

Никаких сообщений об ошибках, но я не могу сказать, куб это или нет.

Я рекомендую вам прочитать о проекционных матрицах. В каждом базовом руководстве по OpenGL есть пример рендеринга куба.

Yakov Galka 17.07.2019 01:10
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
477
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
    // Render here
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    // need the window width & height to compute aspect ratio
    int width, height;
    glfwGetWindowSize(window, &width, &height);

    // set up the camera projection (if you haven't done this in init)
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45.0f, float(width) / height, 0.1f, 100.0f);

    // set camera position & orientation
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    gluLookAt(1, 1, -3, //< eye position
              0, 0, 0,  //< aim position
              0, 1, 0); //< up direction

    // now draw stuff
    glBegin(GL_QUADS);
    glEnd();

Идеально! Похоже, я сделал куб правильно, я просто не мог его увидеть, потому что смотрел на него с оси z, которая показывала мне только одну грань. Большое спасибо!

Ashwin Raj 18.07.2019 21:15

Другие вопросы по теме