2014年6月26日木曜日

Xp → Vista → 7 → 8/8.1で変わったウィンドウの描画方法

Windows Vista では、デスクトップの描画が、「DWM」(Desktop Window Manager)に変わった。
WIndows 7では、新しいグラフィックAPI「Direct2D」「DirectWrite」により、画面表示が高速化・文字が綺麗になった。
Windows 8/8.1では、タブレット機向けの、ModernUIが実装された。
この通り、ココ最近のWindowsでは、描画のAPI等が急激に変化した。では、どのように変わったのか、見てみる…
Xp → Vistaの変化は、「DWM」が大きい。「DWM」により、より高度なアニメーションをすることができ、GPUを使い、高速化できるようになった。その成果が、「Windows Aero」である。また、テキスト表示や2D図形、線を表示するために、新しくグラフィックスサブシステム「WPF」(Windows Presentation Foundation)が導入された。しかし、WPFは高度な機能を有していたため、単純なロジックを作るのに、プログラミングが難しかった。
そのため、Vista → 7の変化は、新しいグラフィックAPI「Direct2D」「DirectWrite」が導入された。「Direct2D」は、2Dグラフィックを描画するためのAPIで、「DirectWrite」は文字を描画するためのAPIだ。どちらも、GPUの恩恵を受けることができ、高速化できる。そのため、WIndows7に標準搭載されている、「電卓」「ペイント」「ワードパッド」「Internet Explorer 9」では、高速化・GUIの美化がされている。また、「Firefox」でも、これらのAPIのおかげで高速化されている。(Chrome?そんなの知らん)
7 → 8/8.1の変化は、主に、高速化である。前述の2つのAPIが、高速化された。「Direct2D」では、「TIR」(Target Independent Rasterization)が導入され、より、ハードウェアの恩恵を受けれるようになった。「DirectWrite」では、1.5倍~3.3倍まで、パフォーマンスが向上したという。その御蔭で、ModernUIで高速な画面描画ができるようになった。
以上のように、描画方法が、ここ8年で、劇的に変化した。今のプログラミングでは、WInAPI呼び出して、GDI/GDI+で描画するのではなく、WPF/DirectWrite/Direct2D等の新しいAPIを使うのが良いだろう。それが出来なければ、QtやGtkなどのライブラリに頼り、OpenGLで描画するのも良いだろう。

0 件のコメント:

コメントを投稿