Приложение Qt работает на настольном компьютере, а не на ноутбуке? - PullRequest
1 голос
/ 27 октября 2011

Я пишу приложение OpenGL с использованием Qt, и оно прекрасно собирается и работает на моем рабочем столе, но когда я пытаюсь запустить точно такой же код на моем ноутбуке, оно строит, но ничего не выводит? Вот мой main.cpp

#include <QtGui/QApplication>
#include <QtOpenGL/QGLWidget>
#include "GLWidget.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    GLWidget window;
    window.resize(1050,700);
    window.setFixedSize(1050, 700);
    window.show();

    return app.exec();
}

Я не хочу, чтобы пользователь мог изменять размер окна, следовательно, фиксированный размер. Если я установлю точку останова в последней строке main, она никогда не достигнет ее на моем ноутбуке. Я прошел через код и сразу после вызова show () (это просто встроенная функция) отладчик завершает работу с кодом 0. Я проверил все параметры сборки и запуска проекта, они одинаковы на обеих машинах. Мой рабочий стол имеет монитор 1920x1080, но мой ноутбук имеет только 1366x768, это может иметь какое-либо отношение к нему? Есть ли в Qt какая-то внутренняя проверка, которая зависит от разрешения моих экранов? Это единственное, о чем я могу думать.

1 Ответ

1 голос
/ 28 октября 2011

Я не хочу, чтобы пользователь мог изменять размер окна

Могу я спросить, почему?Могу ли я предположить, что вы хотите, чтобы окно было фиксированного размера, потому что вы хотите использовать OpenGL для генерации изображения именно этого размера?Если это так, то я должен сказать вам, это не будет работать таким образом.Реализации OpenGL будут отображать только то, что станет видимым на экране (тест владения пикселями).Если части окна не видны (а в вашем случае это будет иметь место на ноутбуке), эти пиксели просто не отображаются.Считывание кадрового буфера оставит эти пиксели неопределенными.

Правильный способ решения этой проблемы - использовать PBuffer или объект буфера кадров (FBO) .FBO проще в использовании, но не так широко поддерживается в Windows (графика Intel в Windows имеет довольно слабую поддержку FBO).FBO поддерживаются всеми реализациями Linux OpenGL (Mesa (также Intel), ATI / AMD и NVidia).В сети есть учебники по FBO и PBuffer.

...