JUCEは自前でバックバッファを持ち、そこにソフトウェアレンダリングしたものをOSのWindow領域にBltする方式をとっていた。
GDIによるハードウェア描画ではなく、自前描画だと重いのではと思っていたが、JUCEを触っていると重いとは感じない。むしろ軽い感じがする。
ソフトウェアレンダリングしても十分に実用的なパフォーマンスが出るほどCPUの能力が高いということだろうか。
とすると、描画部分をGPUに任せればもっと軽くなり、描画以外の仕事にCPUを割り振る事が可能になるのではないか?
ひょっとするとVistaはDirect3Dを利用しているとの事だが、そういうこと(GPUを駆使して描画)なのかもしれない。
調べてみると、驚くべきことがわかった。
・Vistaはアプリケーション側にオフスクリーンバッファを持っている。
・GDI描画命令はオフスクリーン描画にリダイレクトされる。すなわちソフトウェア描画される。
・DWMが適宜オフスクリーンバッファの内容をビデオメモリに転送する。
というわけで、仕組みはJUCEとほとんど同じだった!
Direct3Dの出番はどこなのだろう。。。。
アルファブレンドなどのエフェクト部分かな?