VSYNC
画像をWindowに表示するアプリを作ってたら、なんだか描画の際に起きるちらつきが凄く気になってしまう。どうやら垂直同期のタイミングと、描画のタイミングが一致していないからっぽい。
元々の画像のサイズは8000*8000くらいまで対応したいので、それを材料にして描画する為にDIBを用意して、それをDrawDibDrawで描画するのが一番効率が良いっぽいけれど、そうしてもやっぱりちらつきが残ってしまう。
Picgl http://www6.plala.or.jp/nyk/picgl/ というソフトは描画にOpenGLを使っているんだけれど、自分が使っているグラフィックカード(ATIのRadeion9600)のOpenGLの設定で垂直同期を待つ、にすると、かなりtearingが消える。(画像のスクロールをさせた場合の比較で)これはドライバ自身がWindowの場合でも描画のタイミングを取ってくれるのかなぁ。。それでもWindowを横に動かしたりすると出てしまうけれど。
DrawDibDrawはGDI自体は使わないで、バッファをそのまま転送してくれるので高速なようなんだけれど、BottomUpのDIBしか使えないのがちょっと面倒くさいような気がする。
Windowsの場合は根本的に解決するならフルスクリーンにしないと駄目そうなんだけれど、MacOSXとかはOSの方で面倒見る仕掛けとか用意してたりするかもなぁ。。Longhornはどうなるやら。