web-dev-qa-db-ja.com

ハードウェアアクセラレーションなしでWindowsにQt5をデプロイする

Qt5は、ANGLEを使用してOpenGLドライバーまたはDirectXドライバーを使用できます。インストールされているOpenGLドライバーに依存することはできないため、ANGLEバックエンドを使用する必要があります。残念ながら、これは、特にハードウェアアクセラレーションのないWindows仮想マシンでの展開の問題をすべて解決するわけではありません。これらのシステムでは、OpenGLコンテキストの作成に失敗したというエラーメッセージが表示されます。

スクリーンショット:QSurfaceFormat形式のOpenGLコンテキストの作成に失敗しました

必要なすべてのライブラリ(libEGL.dll libGLESv2.dll libeay32.dll msvcp110.dll msvcr110.dll d3dcompiler_46.dll)を展開していますが、このエラーメッセージは引き続き表示されます。

OpenGLドライバーのないエンドユーザーマシンとDirect3Dアクセラレーションのない(仮想)マシンで実行する必要があるQMLアプリケーションをどのようにデプロイしますか?

Qt wikiにページがあります この問題について言及しています ですが、それはそれを解決するのにあまり役に立ちません。

Qt 5.4.0の更新:

これまでの私の調査結果は次のとおりです。

  • QT_ANGLE_PLATFORM = warp->を設定すると、コンテンツのないウィンドウが作成されます。
  • QT_ANGLE_PLATFORM = d3d9->同じエラーダイアログを期待どおりに設定します。
  • QT_ANGLE_PLATFORM = d3d11->同じエラーダイアログを期待どおりに設定します。
  • QT_OPENGL = desktop-> QT_ANGLE_PLATFORM = warpと同じ設定。
  • 予想どおり、QT_OPENGL = angle->同じエラーダイアログを設定します。
  • QT_OPENGL = software + opengl32sw.dll(mesa for windows) ->予測不能の設定:実行される可能性があり、クラッシュする可能性があります。

Qt Quick 2Dレンダラーの更新

Mesaは部分的なソリューションのようですが、Qt 5.4.0では設定が非常にクラッシュすることがよくあります。

別のフォールバックはQt Quick 2Dレンダラーである可能性がありますが、残念ながらこれもクラッシュします。

  • Softwarecontext.dllを/ scenegraphにコピー+ QMLSCENE_DEVICE = softwarecontextの設定->クラッシュ

一部のユーザーエクスペリエンス後に更新します。

  • 一部のシステムにはいくつかのレンダリングバグがあります
  • すべてのシステムで信頼できるとは限らない
  • 信頼できません
  • デフォルトは古すぎるOpenGL 1.1を実装しています。
  • OpenGLのバージョンに問題がなくても信頼できません。
  • Qtで使用した場合、レンダリングのバグがあります
  • いくつかの主要なレンダリングの問題があります
  • クラッシュ、フリーズ
  • HWアクセラレーションなしのシステムで動作します
  • 現時点では非常に信頼できるようです
  • 一般的に非常に遅く、システムによっては非常に遅くなります。
  • 重い展開の重み

結論:これらのシステムの実際の解決策はまだありません

Qt 5.5の更新

Anno 2015:壊れたグラフィックドライブはまだ壊れています。

当面の結論は次のとおりです。

  1. 可能であればQtQuick2dRendererを使用してください。
  2. それ以外の場合はMesaバックエンドを使用してください。
  3. 角度をスキップ、デスクトップOpenGLをスキップ、ワープをスキップ。
25

QT 5には、一部のハードウェア構成でのopenglとの大きな互換性の問題があります。IntelHD3000ドライバーとNvidia/ATIカードの組み合わせは、Windows 10では機能しません https://bugreports.qt.io/browse/QTBUG-4224

Intelはこのカードのサポートを打ち切りましたが、それらのドライバーにはクラッシュにつながるバグがあります。

HD3000で顧客をサポートしたい場合、ハードウェアopenglに依存することはできません。

8
Brun

Windowsでは、opengl32.dllがデフォルトのOpenGLドライバです。 OpenGL 1.1(本当に古いバージョン)を実装しています。 ANGLEにはOpenGL ES 2.0のベースラインがあり、呼び出しをマッピングするためにDirectX 9/11をインストールする必要があります。

そのため、OpenGLドライバーがインストールされていないビデオカード、OpenGLドライバーが2.0未満、またはDirectX 9/11がインストールされていない場合、アプリは機能しません。

仮想化と3Dアクセラレーションに関しては、これらは一見の価値があります。

また、VirtualBoxでマルチモニターWindows環境を実行すると、3Dアクセラレーションが無効になります。

4
Kerry Kobashi

これを再度チェックして、これらの問題がQT 5.12.2の最新リリースで修正されているかどうかを確認しましたが、まだ修正されていません。参照されているQT wikiエントリOPで説明されている関数 https://wiki.qt.io/Qt_5_on_Windows_ANGLE_and_OpenGL は良さそうですが、実際には機能しません。

私は、あらゆる形式のQTでOpenGLを回避すると結論付けています。それはあまりにも信頼できません。

1
Silicon Snooki