私は Windows の開発者で、WinAPI プログラムの経験があります。私の知る限り、Windows で描画するには 2 つの方法があります。GDI (GDI+ のような GDI のラッパーを含む) を呼び出して従来の描画を行うか、DX や OpenGL などの API を呼び出して GPU を使用して描画します。しかし、Qt のような他のものは何ですか? Qtは最終的にGDIを呼び出して何かを描画しますか? それとも、直接描画する独自の方法がありますか? 一般的な理論を知りたいだけです。
3 に答える
QT 4.0以降、GDIの使用が変更され、移植性を向上させる可能性のある他の内部に置き換えられました。必要に応じて、QTはオープンソースであるため、コードを見てQTGUI.dllの内部を理解することができます.
私はこれを実際には知りませんが、 http: //qt-project.org/forums/viewthread/33565の回答は信頼できるようです。
更新: このページはより正確なようです: http://qt-project.org/wiki/Qt-5-on-Windows-ANGLE-and-OpenGL
Windows 上の Qt 5 は、ANGLE ライブラリを介して OpenGL ドライバーまたは DirectX ドライバーのいずれかを使用するように構成できます。必要なものは、ユースケースによって異なります。Qt プロジェクトは、両方のバリアントのバイナリ インストーラーを提供します。OpenGL
OpenGL (Open Graphics Library) は、2D および 3D コンピュータ グラフィックスをレンダリングするための、広く普及している業界標準 [opengl.org] です。これは、Mac OS X、Linux、およびほとんどの組み込みプラットフォームでのハードウェア アクセラレーション グラフィックス操作のデファクト スタンダードです。
OpenGL ES 2.0 (Open Graphics Library for Embedded Systems) は、組み込みシステムで使用するための OpenGL の簡易バージョンであり、一部の機能が欠落しています。
Qt 5 の Qt Quick 2 スタックは OpenGL に基づいており、OpenGL 3.0 (または、framebuffer_object 拡張機能を持つ OpenGL 2.x) 以降または OpenGL ES 2.0 が必要です。Qt OpenGL モジュール [qt-project.org] には、OpenGL 1.3 以降が必要です。Windows 上の OpenGL
Microsoft Windows はかなり前から OpenGL をネイティブでサポートしていますが、サポートされている標準バージョン (ドライバーがインストールされていないバージョン 1) は Qt にはあまりにも制限されています。新しいバージョンは通常、カスタム グラフィックス ドライバーから入手できますが、ユーザーはそれらをインストールする必要があります。また、一部のドライバーによる OpenGL サポートの品質が不足しています。アングルプロジェクト
ANGLE (Almost Native Graphics Layer Engine) は、Google によるオープン ソース プロジェクト [code.google.com] です。その目的は、OpenGL ES 2.0 API 呼び出しを DirectX 9 API にマップすることです。定期的に更新されるバージョンは、qtbase [qt.gitorious.org] の一部です。
Qt を ANGLE でコンパイルするには、Direct X SDK [msdn.microsoft.com] をインストールする必要があります。Windows Kit 8 以降、これは Windows SDK に含まれています。
アプリケーションで ANGLE を使用する場合は、Qt ライブラリと一緒に d3dcompiler_XX.dll を出荷する必要があります。D3D シェーダー コンパイラのバージョン文字列は DirectX SDK ヘッダーから取得されるため、ANGLE がビルドされたのと同じバージョン (_43 または _46 など) を取得してください。これは、Qt を -angle-d3d11 で構成する場合に特に重要になります。推奨事項 アプリケーションが OpenGL ES 2.0 の一部ではない OpenGL 呼び出しを使用する場合は、デスクトップ OpenGL を使用してください。アプリケーションは Windows XP で実行する必要があります。このプラットフォームで欠落しているグラフィックス ドライバーの代わりとして ANGLE を使用したくなるかもしれませんが、完全には機能せず、たとえばセキュリティ ダイアログが開いたときにクラッシュする可能性があります。
OpenGL ES の機能が必要であるが、完全な OpenGL ではない場合は ANGLE を使用する 異なる Windows バージョンとグラフィック カードを使用する異機種混合のユーザー ベースを使用している ユーザーが最新のグラフィック カード ドライバーをインストールする必要がないようにしたい のビデオ再生機能を使用したいQtMultimedia (QTBUG-31800 [bugreports.qt-project.org] を参照) アプリケーションは Windows リモート デスクトップ プロトコル上で実行する必要があります (OpenGL とリモート デスクトップ [social.technet.microsoft.com] を参照)
参考文献
http://qt-project.org/doc/qt-5.1/qtdoc/requirements-win.html http://qt-project.org/doc/qt-5.1/qtopengl/qtopenl-index.html http:// blog.qt.digia.com/blog/2012/10/24/graphics-on-windows-from-a-different-angle/ http://blogs.msdn.com/b/chuckw/archive/2012/05/ 07/hlsl-fxc-and-d3dcompile.aspx