不可逆な毎日ブログ

2度と過ごすことのない毎日をつらつらと・・・

画面のちらつきをなくす

現在作成しているプログラムで、画像を画面上動かす処理が必要なのだが
どうしても、ティアリングが発生してしまう。
SlimDXというオープンソースを使用すれば、DirectXC#から使用できるそうなのだが
それは最後の手段と言うことで。

まずやったこと。

  • DrawImageからBitBltでの描画へ変更
  • Paintイベントでの描画をやめる
  • タイマをマルチメディアタイマへ変更
  • fpsの管理


BitBltへの変更は、すんなりできたが、あまり効果がない。
先輩に相談したところ、Paintイベントで描画をしているからだと指摘。
イベントを挟む分、無駄だそうで。
早速変更したところ、ある程度、スムーズに描画される。
しかし、描画はかくつく。
そこで、マルチメディアタイマ。先輩曰く、精確だそうで。
検索してみると、C#でラッパクラスを作成している人が。早速拝借。
マルチメディアタイマ - 不可逆な毎日
気持ち、良くなった気が。
どうしようかなぁ、と思っていたら、YaneSDKというものがあった。
FpsTimerクラスが、微調整してくれるようだ。
利用してみると、かなり改善された。しかし、まだ、ティアリングは発生する。
もうこれは、SlimDXを利用して、vSync使うしかないんだろうな。

だけど、マルチメディアタイマ、YaneSDKには助けられた。感謝。