2Dが速いビデオカード Part2【GDI/D2D】

このエントリーをはてなブックマークに追加
559Socket774
>>553
まず、「2Dが早い」というのは多くの語弊を含んでいる点に注意。
Windowsで提供される2D描画には複数のAPIがあって、アプリケーションが適切にAPIを選択していないと
ハードウェアアクセラレーションがあろうとなかろうと台無しになっちゃう。

GDI/GDI+       Windowsの基本的なGUI機能を提供する。GDI+ではjpeg等圧縮画像の伸張なんかも。
DirectDraw      GDIでは実現できない、より直接的な描画機能を提供する。タイミング制御も可能。
Direct3D        3D描画機能を用いてより高度な2D描画を行う。DirectDrawと同じ効果をより効率的に実現できる。

Direct2D        複雑なD3DAPIを簡素化し、2D描画をより簡単にプログラミングできるようにする。
DirectWirte      D3Dを用いてより簡単に高速で高度なテキスト描画を提供する。

DirectShow      DirectDraw(Direct3D)やDirectSoundを用いて動画再生を提供する。

ここで使われているCrystalMarkでは、GDIとDirectDrawの速度に注目している。
D2Dの部分がDirectDrawを用いたもの。
一方、Direct3D 8.0の2Dファンクションを用いたものはCrystalMarkでは計測されていない。

ハードウェアアクセラレーションは、GDI、DirectDraw、D3D8、D3D9〜D3D9.0c、D3D10なんかが存在する。

WindowsXPまでのドライバモデルでは、GDIとDirectXのドライバは個別で、
DirectDrawのファンクションも直接利用できる。

WindowsVistaではWDDMがすべて吸収し、Direct3Dのみを利用する。
GDIやDirectDrawは一度メインメモリ上のサーフェイスに描画され、完成イメージがビデオメモリに転送される。
ビデオカードがD3D10の機能を持っていた場合Direct3D10が利用できるが、そうでない場合は
Direct3D9が利用される。

Windows7になるとDirect3D10も仮想化され、D3D9しかない場合は
Direct3D10Level9経由で制限付のDirectX10機能が利用可能になる。