質問: 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のフードの下で何らかの内部チェックが行われていますか?それは私が考えることができる唯一のものです。
回答: > > ユーザーがウィンドウのサイズを変更できるようにしたくありません。 > > > 理由を聞いてもよろしいですか? OpenGLを使って正確にこのサイズの画像を生成したいので、ウィンドウを固定サイズにしたいと思うかもしれませんか?もしそうなら、私はあなたに言う必要があります、それはそのように動作しません。 OpenGLの実装では、画面上に表示されるもの(ピクセルの所有権テスト)のみがレンダリングされます。ウィンドウの一部が見えない場合(あなたの場合、これはラップトップの場合になります)、それらのピクセルは単純にレンダリングされません。フレームバッファを読み出すと、それらのピクセルは未定義のままになります。 この問題に取り組む適切な方法は、 *PBuffer* または*フレームバッファオブジェクト(FBO)*のいずれかを使用することです。 FBOは使いやすいですが、Windowsでは広くサポートされていません(Windows上のIntelグラフィックスではFBOのサポートが貧弱です)。 FBOはすべてのLinux OpenGL実装(Mesa(Intelも含む)、ATI/AMD、NVidia)でサポートされています。 FBOとPBufferのチュートリアルがウェブにあります。