• 四つのアーキテクチャ変更
–
グラフィックスタックをQML Scenegraph
ベースに–
ウィンドウシステムをLighthouse
で抽象化–
モジュール化したレポジトリ構造– QWidget
をQtGui
モジュールから分離• QtScript を V8 JavaScript エンジンベースに
• QtWebKit を WebKit2 ベースに
31 / 51
Qt 5 のアーキテクチャ図
!"#$%&'($)&$*)$+$( 案 )
!
$
! !
!"#$
!
"#$!%&!"'!()*!+,-,!"./012%3,4%-5!0,!%',!/-&6-/%&7!8039-&6)!:;;!6/05%&7!2011-&,!'2/<+72!
%=1-/0'%>-!6/05%&7!3<==0&6,!=09%&7!,+8<1'%=0;!+,-!<?!'2-!.@A!0&6!=09%&7!3-/'0%&!
'2%&7,!0,!,206-/!-??-3',!<&!,+8'/--,!<?!%'-=,!>-/B!20/6!'<!%=1;-=-&')!
!
C</!'20'!/-0,<&!5-!5%;;!8-!=<>%&7!<>-/!'<!'2-!,3-&-!7/012!'20'!20,!8--&!6->-;<1-6!5%'2!
"#$!%&!=%&6!<>-/!'2-!;0,'!B-0/)!D2%,!&-5!,3-&-!7/012!80,-6!>-/,%<&!<?!"#$!5%;;!8-!
803950/6,!3<=10'%8;-!<&!'2-!"#$!,%6-E!8+'!"#$!%'-=,!%=1;-=-&'-6!%&!FGG!H8B!%&2-/%'%&7!
"I-3;0/0'%>-J'-=K!5%;;!&--6!'<!8-!,;%72';B!320&7-6)!L-!5%;;!0%=!0'!1/<>%6%&7!0&!%'-=!%&!'2-!
,3-&-!7/012!'20'!%,!0,!H,<+/3-K!3<=10'%8;-!0,!1<,,%8;-!'<!"I-3;0/0'%>-J'-=!'<!-0,-!
'/0&,%'%<&)!
!
D2-!-M%,'%&7!"./012%3,4%-5!80,-6!"#$!5%;;!3<&'%&+-!'<!8-!,+11</'-6!?</!0!'/0&,%'%<&0/B!
1-/%<6E!8+'!5%;;!&<'!8-!6->-;<1-6!0&B!?+/'2-/)!C+/'2-/=</-!%'!5%;;!6-1-&6!<&!"L%67-'!0&6!
'2+,!8-!&<'!/-3<==-&6-6!H</!0>0%;08;-K!?</!+,07-!<&!6->%3-,)!
!
!
QML 3D
SceneGraph Qt Components
QML
WebKit Qt 3D
Lighthouse OpenGL Enabled
WindowSurface
Win Mac Linux/
Wayland Symbian X11 Android !
QtGuiCore module
Composition of all UI will go through SceneGraph.
WebKit, Qt Components and QML will create content nodes for the scene graph and the scenegraph will compose / render all content through and OpenGL surface provided by the Lighthouse layer.
2D API's will primarily serve as a content feeder into the scenegraph, typically layers that need to be composed.
2D API (QPainter)
Raster
Engine GL Engine
QBackingstore QWidget
32 / 51
QML Scene Graph
• QML をより速く、より滑らかに
–
現在のDeclarative
モジュールはQGraphicsView
上でソフトウェアによる描画– QML Scene Graph
ではOpenGL
をフル活用して高速化• Front-to-Back
で最小限の描画•
シーングラフでコンテキストの切り替えを最小化•
シェーダの活用http://qt.nokia.com/developer/learning/online/talks/developerdays2010/tech-talks/scene-graph-a-different-approach-to-graphics-in-qt
QML Scene Graph
• 従来は背景から順に描画
–
子要素で隠れるところも描画Text 1
Text 2
34 / 51
QML Scene Graph
• Scene Graph では
–
無駄な描画を減らし、コンテキスト変更も最小限Text 1
Text 2
QML Scene Graph: Demo
http://labs.qt.nokia.co.jp/2011/03/24/the-convenient-power-of-qml-scene-graph.html
36 / 51
Lighthouse
• Qt のウィンドウシステムを抽象化
–
今までは個別にウィンドウシステム対応–
抽象化することによって移植性を向上–
アクセラレーションとの相性も向上• Qt 4.8 から正式リリース予定
http://labs.qt.nokia.com/category/labs/lighthouse/
Qt Quick Components
• Qt Quick
向けのウィジェットセットhttp://labs.qt.nokia.co.jp/2010/09/27/building-the-future-reintroducing-the-qt-quick-components.html
リソース
Qt Labs Japan
• Qt の情報を日本語で発信
– Qt
をはじめよう! – Qt Quick
入門–
英語版Labs
の翻訳• http://labs.qt.nokia.com
– Qt in depth – etc.
• Twitter: @qtjapan
http://labs.qt.nokia.co.jp
40 / 51
Qt をはじめよう !
• Qt Labs Japan にて
「 Qt をはじめよう ! 」と題した連載を掲載中
– Qt Creator
を使ったQt
アプリの作成方法– Qt
の基本•
オブジェクトモデル•
シグナル・スロット•
レイアウト• GUI
デザイナhttp://labs.qt.nokia.co.jp/getting-started-with-qt
ML 、 IRC 、バグトラッカー
• メーリングリスト
– http://lists.qt.nokia.com
– Qt
関連の各種メーリングリスト(
英語)
• IRC
– irc.freenode.net
• #qt-labs, #qt-creator, #qt-qml, etc.
• バグトラッカー
– http://bugreports.qt.nokia.com/
–
バグを見つけたら報告お願いします(
英語)
42 / 51