Qtアプリはデスクトップでは動作しますが、ラップトップでは動作しませんか?

私はQtを使ってOpenGLアプリケーションを書いていますが、それはデスクトップ上でうまく構築されていますが、ラップトップで全く同じコードを実行しようとすると、ビルドされますが何も出力されません。ここに私のmain.cppです

#include 
#include 
#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();
}

私は、ユーザーがウィンドウのサイズを変更できないようにしたいので、固定サイズにする必要があります。私がメインの最後の行にブレークポイントを設定すると、それは私のラップトップでは決して到達しません。コードをステップ実行し、show()が呼び出された直後(これは単なるインライン関数)、デバッガはコード0で終了します。すべてのプロジェクトのビルドと実行設定を確認しましたが、両方のマシンで同じです。 私のデスクトップには1920x1080のモニターがありますが、私のラップトップは1366x768しかありません。私の画面の解像度に依存するQtのフードの下で何らかの内部チェックが行われていますか?それは私が考えることができる唯一のものです。

1
私のGLWidget.hの唯一のものはクラス宣言です。同じコードがデスクトップ上で正常に動作することを確認すると、環境問題のように感じられます。
追加された 著者 mikestaub,
@KeithThompsonは両方のcompsでwin7を使用しています
追加された 著者 mikestaub,
@karlphillip私は同じ結果を2で割ってみました。ノートパソコンではなくデスクトップで動作します
追加された 著者 mikestaub,
@BenVoigt両方のマシンでDPIが100%に設定されている
追加された 著者 mikestaub,
@karlphillip私のラップトップでデバッグすると、GLWidgetのコンストラクタが呼び出され、resizeの呼び出しが成功し、show()コールの後にデバッガが終了します。これはGLWidgetのどのサイズでも起こります。
追加された 著者 mikestaub,
あなたはどのOSを使用していますか?
追加された 著者 Keith Thompson,
あなたの推測は正しいかもしれません、@ pixelpusher。あなたができる簡単なテストがあります。あなたが渡しているサイズを2で割って、新しいアプリケーションがノートパソコンだけでなくデスクトップでも実行できるかどうかを確認してください。
追加された 著者 karlphillip,
ラップトップに任意のサイズの GLWidget を作成できますか?あなたの調査はここから始めるべきだと思います。
追加された 著者 karlphillip,
ラップトップにはすべてのQtライブラリがインストールされていますか?依存関係の問題がないか、別のバージョンのライブラリを使用しようとしている可能性があります。 PATH環境変数が正しいライブラリを指していることを確認してください。
追加された 著者 karlphillip,
DPIの設定も確認したいと思います。サイズをピクセル単位で表したものが自動スケールされている場合に備えて。
追加された 著者 Ben Voigt,
たぶんGLWidget.h内の何か内部ですか?
追加された 著者 Morten Kristensen,
非常に分かりやすい質問をするには:OpenGLのサポートでQtをコンパイルしましたか?
追加された 著者 Robin,
最新のディスプレイドライバがあるかどうか確認してください。
追加された 著者 user362638,
当時、重大なアクセス制限のある病院のWindows XPマシンには、同様の問題がありました。 OpenGL Qtアプリケーションは起動しませんでした。起動時にクラッシュします。最終的に私はそれをOS OpenGLのdllに絞り込んだ。 OSレベルのOpenGLライブラリを使用することが許可されていないか、OpenGLがOSに含まれていませんでした。ラップトップのQtOpenGl4.dllに depends を使用して、すべてのdllにアクセスできるかどうかを確認してください。また、ラップトップでアプリケーションを再コンパイルするか、デスクトップからバイナリをコピーするだけですか?
追加された 著者 ak.,

1 答え

ユーザーがウィンドウのサイズを変更できるようにしたくありません。

理由を聞いてもよろしいですか? OpenGLを使って正確にこのサイズの画像を生成したいので、ウィンドウを固定サイズにしたいと思うかもしれませんか?もしそうなら、私はあなたに言う必要があります、それはそのように動作しません。 OpenGLの実装では、画面上に表示されるもの(ピクセルの所有権テスト)のみがレンダリングされます。ウィンドウの一部が見えない場合(あなたの場合、これはラップトップの場合になります)、それらのピクセルは単純にレンダリングされません。フレームバッファを読み出すと、それらのピクセルは未定義のままになります。

この問題に取り組む適切な方法は、 PBuffer またはフレームバッファオブジェクト(FBO)のいずれかを使用することです。 FBOは使いやすいですが、Windowsでは広くサポートされていません(Windows上のIntelグラフィックスではFBOのサポートが貧弱です)。 FBOはすべてのLinux OpenGL実装(Mesa(Intelも含む)、ATI/AMD、NVidia)でサポートされています。 FBOとPBufferのチュートリアルがウェブにあります。

1
追加された