画面のちらつきをなくす
現在作成しているプログラムで、画像を画面上動かす処理が必要なのだが
どうしても、ティアリングが発生してしまう。
SlimDXというオープンソースを使用すれば、DirectXをC#から使用できるそうなのだが
それは最後の手段と言うことで。
まずやったこと。
- DrawImageからBitBltでの描画へ変更
- Paintイベントでの描画をやめる
- タイマをマルチメディアタイマへ変更
- fpsの管理
BitBltへの変更は、すんなりできたが、あまり効果がない。
先輩に相談したところ、Paintイベントで描画をしているからだと指摘。
イベントを挟む分、無駄だそうで。
早速変更したところ、ある程度、スムーズに描画される。
しかし、描画はかくつく。
そこで、マルチメディアタイマ。先輩曰く、精確だそうで。
検索してみると、C#でラッパクラスを作成している人が。早速拝借。
マルチメディアタイマ - 不可逆な毎日
気持ち、良くなった気が。
どうしようかなぁ、と思っていたら、YaneSDKというものがあった。
FpsTimerクラスが、微調整してくれるようだ。
利用してみると、かなり改善された。しかし、まだ、ティアリングは発生する。
もうこれは、SlimDXを利用して、vSync使うしかないんだろうな。
だけど、マルチメディアタイマ、YaneSDKには助けられた。感謝。