Qt 5 on Windows ANGLE and OpenGL/ja: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
[[Qt-5-on-Windows-ANGLE-and-OpenGL|English]] | '''日本語'''
[[Qt-5-on-Windows-ANGLE-and-OpenGL|English]] | '''日本語'''


=Windows 版 Qt 5 の <span class="caps">ANGLE</span> と OpenGL=
= Windows 版 Qt 5 の ANGLE と OpenGL =


===はじめに===
=== はじめに ===


Windows 版の Qt 5 では OpenGL ドライバを直接使用するか、ANGLE ライブラリを通じて DirectX ドライバを使用するかを選択できるようになっています。どちらが適切かはユースケースによって異なります。Qt project のバイナリパッケージではその双方を提供しています。
Windows 版の Qt 5 では OpenGL ドライバを直接使用するか、ANGLE ライブラリを通じて DirectX ドライバを使用するかを選択できるようになっています。どちらが適切かはユースケースによって異なります。Qt project のバイナリパッケージではその双方を提供しています。


===OpenGL===
=== OpenGL ===


OpenGL(Open Graphics Library) は 2D や 3D CG の描画用に広く普及している業界の「 [http://www.opengl.org/ 標準] ''[opengl.org]'' 」です。Mac OS X や Linux、組み込みプラットフォームのほとんどでハードウェアアクセラレーションを用いてグラフィック描画を行う際のデファクトスタンダードとなっています。
OpenGL(Open Graphics Library) は 2D や 3D CG の描画用に広く普及している業界の「 &quot;標準&amp;quot;:http://www.opengl.org/ 」です。Mac OS X や Linux、組み込みプラットフォームのほとんどでハードウェアアクセラレーションを用いてグラフィック描画を行う際のデファクトスタンダードとなっています。


OpenGL ES 2.0 (Open Graphics Library for Embedded Systems) は OpenGL を組み込みシステムで利用するためのサブセットで、いくつかの機能がありません。
OpenGL ES 2.0 (Open Graphics Library for Embedded Systems) は OpenGL を組み込みシステムで利用するためのサブセットで、いくつかの機能がありません。


Qt 5 の Qt Quick 2 は OpenGL をベースとしており、OpenGL 3.0 (あるいは OpenGL 2.x と framebuffer_object エクステンション) 以上のバージョンか OpenGL ES 2.0 が必要です。 [http://doc.qt.io/qt-5.0/qtopengl/qtopengl-index.html Qt OpenGL モジュール] ''[qt.io]'' は OpenGL 1.3 以上を必要とします。
Qt 5 の Qt Quick 2 は OpenGL をベースとしており、OpenGL 3.0 (あるいは OpenGL 2.x と framebuffer_object エクステンション) 以上のバージョンか OpenGL ES 2.0 が必要です。 &quot;Qt OpenGL モジュール&amp;quot;:http://doc.qt.io/qt-5.0/qtopengl/qtopengl-index.html は OpenGL 1.3 以上を必要とします。


===Windows における OpenGL===
=== Windows における OpenGL ===


Microsoft Windows は以前から OpenGL をネイティブでサポートしていますが、(ドライバを一切インストールしていない状態ではバージョン 1 をサポートとなっており) Qt で使用するには非常に限られた状態に置かれています。より新しいバージョンも通常はカスタムグラフィックドライバで提供されていますが、ユーザによるインストールが必要となります。また、いくつかのドライバではその OpenGL サポートの品質がよくありません。
Microsoft Windows は以前から OpenGL をネイティブでサポートしていますが、(ドライバを一切インストールしていない状態ではバージョン 1 をサポートとなっており) Qt で使用するには非常に限られた状態に置かれています。より新しいバージョンも通常はカスタムグラフィックドライバで提供されていますが、ユーザによるインストールが必要となります。また、いくつかのドライバではその OpenGL サポートの品質がよくありません。


===<span class="caps">ANGLE</span> プロジェクト===
=== ANGLE プロジェクト ===


<span class="caps">ANGLE</span> (Almost Native Graphics Layer Engine) は Google による [http://code.google.com/p/angleproject/ オープンソースプロジェクト] ''[code.google.com]'' です。このプロジェクトでは OpenGL ES 2.0 の <span class="caps">API</span> を DirectX 9 の <span class="caps">API</span> に変換します。Qt 5 では [https://qt.gitorious.org/qt/qtbase/trees/stable/src/3rdparty/angle qtbase の一部] ''[qt.gitorious.org]'' としてその最新バージョンを提供しています。
ANGLE (Almost Native Graphics Layer Engine) は Google による &quot;オープンソースプロジェクト&amp;quot;:http://code.google.com/p/angleproject/ です。このプロジェクトでは OpenGL ES 2.0 の API を DirectX 9 の API に変換します。Qt 5 では &quot;qtbase の一部&amp;quot;:https://qt.gitorious.org/qt/qtbase/trees/stable/src/3rdparty/angle としてその最新バージョンを提供しています。


Qt を <span class="caps">ANGLE</span> 用にコンパイルするには [http://msdn.microsoft.com/en-us/directx/default.aspx Direct X <span class="caps">SDK</span>] ''[msdn.microsoft.com]'' がインストールされてなくてはいけません。 Windows Kit 8 からは Direct X <span class="caps">SDK</span> は Windows <span class="caps">SDK</span> に同梱されることになりました。
Qt を ANGLE 用にコンパイルするには &quot;Direct X SDK&amp;quot;:http://msdn.microsoft.com/en-us/directx/default.aspx がインストールされてなくてはいけません。 Windows Kit 8 からは Direct X SDK は Windows SDK に同梱されることになりました。


アプリケーションが <span class="caps">ANGLE</span> を使用している場合、 Qt のライブラリと共に d3dcompiler_XX.dll を同梱すべきです。D3D Shader Compiler のバージョンは Direct X <span class="caps">SDK</span> のヘッダから決まります。そのため、ANGLE がビルドされたときと同じバージョン (ex. _43 や _46) の <span class="caps">DLL</span> かどうか注意してください。これは特に Qt を -angle-d3d11 オプションをつけて configure したときに重要です。
アプリケーションが ANGLE を使用している場合、 Qt のライブラリと共に d3dcompiler_XX.dll を同梱すべきです。D3D Shader Compiler のバージョンは Direct X SDK のヘッダから決まります。そのため、ANGLE がビルドされたときと同じバージョン (ex. _43 や _46) の DLL かどうか注意してください。これは特に Qt を -angle-d3d11 オプションをつけて configure したときに重要です。


===推奨===
=== 推奨 ===


* デスクトップ OpenGL の使用
* デスクトップ OpenGL の使用
** OpenGL ES 2.0 には無い OpenGL の <span class="caps">API</span> を使用する場合
** OpenGL ES 2.0 には無い OpenGL の API を使用する場合
** OpenGL を一切使用しない場合( <span class="caps">ANGLE</span> 版では利用されないライブラリも依存関係の解決のために同梱しなくてはいけなくなるため )
** OpenGL を一切使用しない場合( ANGLE 版では利用されないライブラリも依存関係の解決のために同梱しなくてはいけなくなるため )
** Windows XP で動かす必要がある場合。このプラットフォームには無いグラフィックドライバの代用として <span class="caps">ANGLE</span> を使用したい気持ちに駆られるのはわかりますが、正常に動作せず、クラッシュの原因となったり、たとえばセキュリティダイアログが表示されたりします。
** Windows XP で動かす必要がある場合。このプラットフォームには無いグラフィックドライバの代用として ANGLE を使用したい気持ちに駆られるのはわかりますが、正常に動作せず、クラッシュの原因となったり、たとえばセキュリティダイアログが表示されたりします。


* <span class="caps">ANGLE</span> の使用
* ANGLE の使用
** OpenGL ES の機能のみで十分で、フルの OpenGL が不要な場合
** OpenGL ES の機能のみで十分で、フルの OpenGL が不要な場合
** さまざまなバージョンの Windows やグラフィックカードで動作させる幅広いユーザ層を持つ場合
** さまざまなバージョンの Windows やグラフィックカードで動作させる幅広いユーザ層を持つ場合
** 最新のグラフィックドライバをユーザにインストールさせる必要性を持たせたくない場合
** 最新のグラフィックドライバをユーザにインストールさせる必要性を持たせたくない場合
** QtMultimedia のビデオプレイバック機能を使用したい場合( 詳細は [https://bugreports.qt.io/browse/QTBUG-31800 <span class="caps">QTBUG</span>-31800] ''[bugreports.qt.io]'' )
** QtMultimedia のビデオプレイバック機能を使用したい場合( 詳細は &quot;QTBUG-31800&amp;quot;:https://bugreports.qt.io/browse/QTBUG-31800 )


===参考文献===
=== 参考文献 ===


http://doc.qt.io/qt-5.1/qtdoc/requirements-win.html<br />http://doc.qt.io/qt-5.1/qtopengl/qtopengl-index.html<br />http://blog.qt.io/blog/2012/10/24/graphics-on-windows-from-a-different-angle/<br />http://blogs.msdn.com/b/chuckw/archive/2012/05/07/hlsl-fxc-and-d3dcompile.aspx
http://doc.qt.io/qt-5.1/qtdoc/requirements-win.html<br />http://doc.qt.io/qt-5.1/qtopengl/qtopengl-index.html<br />http://blog.qt.io/blog/2012/10/24/graphics-on-windows-from-a-different-angle/

Revision as of 09:20, 24 February 2015

English | 日本語

Windows 版 Qt 5 の ANGLE と OpenGL

はじめに

Windows 版の Qt 5 では OpenGL ドライバを直接使用するか、ANGLE ライブラリを通じて DirectX ドライバを使用するかを選択できるようになっています。どちらが適切かはユースケースによって異なります。Qt project のバイナリパッケージではその双方を提供しています。

OpenGL

OpenGL(Open Graphics Library) は 2D や 3D CG の描画用に広く普及している業界の「 "標準&quot;:http://www.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 (あるいは OpenGL 2.x と framebuffer_object エクステンション) 以上のバージョンか OpenGL ES 2.0 が必要です。 "Qt OpenGL モジュール&quot;:http://doc.qt.io/qt-5.0/qtopengl/qtopengl-index.html は OpenGL 1.3 以上を必要とします。

Windows における OpenGL

Microsoft Windows は以前から OpenGL をネイティブでサポートしていますが、(ドライバを一切インストールしていない状態ではバージョン 1 をサポートとなっており) Qt で使用するには非常に限られた状態に置かれています。より新しいバージョンも通常はカスタムグラフィックドライバで提供されていますが、ユーザによるインストールが必要となります。また、いくつかのドライバではその OpenGL サポートの品質がよくありません。

ANGLE プロジェクト

ANGLE (Almost Native Graphics Layer Engine) は Google による "オープンソースプロジェクト&quot;:http://code.google.com/p/angleproject/ です。このプロジェクトでは OpenGL ES 2.0 の API を DirectX 9 の API に変換します。Qt 5 では "qtbase の一部&quot;:https://qt.gitorious.org/qt/qtbase/trees/stable/src/3rdparty/angle としてその最新バージョンを提供しています。

Qt を ANGLE 用にコンパイルするには "Direct X SDK&quot;:http://msdn.microsoft.com/en-us/directx/default.aspx がインストールされてなくてはいけません。 Windows Kit 8 からは Direct X SDK は Windows SDK に同梱されることになりました。

アプリケーションが ANGLE を使用している場合、 Qt のライブラリと共に d3dcompiler_XX.dll を同梱すべきです。D3D Shader Compiler のバージョンは Direct X SDK のヘッダから決まります。そのため、ANGLE がビルドされたときと同じバージョン (ex. _43 や _46) の DLL かどうか注意してください。これは特に Qt を -angle-d3d11 オプションをつけて configure したときに重要です。

推奨

  • デスクトップ OpenGL の使用
    • OpenGL ES 2.0 には無い OpenGL の API を使用する場合
    • OpenGL を一切使用しない場合( ANGLE 版では利用されないライブラリも依存関係の解決のために同梱しなくてはいけなくなるため )
    • Windows XP で動かす必要がある場合。このプラットフォームには無いグラフィックドライバの代用として ANGLE を使用したい気持ちに駆られるのはわかりますが、正常に動作せず、クラッシュの原因となったり、たとえばセキュリティダイアログが表示されたりします。
  • ANGLE の使用
    • OpenGL ES の機能のみで十分で、フルの OpenGL が不要な場合
    • さまざまなバージョンの Windows やグラフィックカードで動作させる幅広いユーザ層を持つ場合
    • 最新のグラフィックドライバをユーザにインストールさせる必要性を持たせたくない場合
    • QtMultimedia のビデオプレイバック機能を使用したい場合( 詳細は "QTBUG-31800&quot;:https://bugreports.qt.io/browse/QTBUG-31800 )

参考文献

http://doc.qt.io/qt-5.1/qtdoc/requirements-win.html
http://doc.qt.io/qt-5.1/qtopengl/qtopengl-index.html
http://blog.qt.io/blog/2012/10/24/graphics-on-windows-from-a-different-angle/