Как переместить вид сцены, используя OpenGL и Qt? - PullRequest
0 голосов
/ 07 мая 2018

Я сделал этот проект на Qt, и мне нужно использовать OpenGL для моделирования здания.У меня есть этот код ниже, чтобы открыть окно и нарисовать куб на экране.Я хотел бы знать, как я могу пройти через эту сцену, используя клавиатуру?Например, я нажимаю стрелку вправо, и «камера» будет указывать в направлении вправо, стрелка влево - влево, стрелка вверх будет «входить» (план -z), а стрелка вниз «возвращается» (план z).

Может кто-нибудь объяснить мне, как это работает?Какой-нибудь учебник для этого?Любая помощь?Я пытался использовать его с избытком lib, но если в Qt есть какая-то простая функция для этого, пожалуйста, дайте мне знать.

glwidget.cpp:

#include "glwidget.h"
#include <GLUT/glut.h>


GLWidget::GLWidget(QWidget *parent) : QGLWidget(parent) {

}

void GLWidget::initializeGL() {

    glClearColor(0.2, 0.3, 0.4, 0.1);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_LIGHT0);
    glEnable(GL_LIGHTING);
    glEnable(GL_COLOR_MATERIAL);

}

void GLWidget::paintGL() {

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glutWireCube(0.6);

}

void GLWidget::resizeGL(int w, int h) {

    glViewport(0, 0, w, h);

    glMatrixMode(GL_PROJECTION);

    glLoadIdentity();

    gluPerspective(45, (float)w/h, 0.01, 100.0);


    glMatrixMode(GL_MODELVIEW);

    glLoadIdentity();

    gluLookAt(0,0,5, 0,0,0, 0,1,0);

}

main.cpp:

#include "mainwindow.h"
#include <QApplication>
#include <GLUT/glut.h>


int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    QApplication a(argc, argv);
    MainWindow w;

    w.show();

    return a.exec();
}

mainwindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

Есть ли простой способ сделать это?Я впервые использую эти инструменты.(Объясните, что я 5лет, хе-хе)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...