2015年5月27日水曜日

Windows:マイクロ秒精度のタイマー

Dxlibに頼らないFM音源ドライバーになりそうだったので、Dxlibに頼ってた関数を
Windowsの標準APIに置き換え。ほとんどがファイル関連だった。最後に残った
マイクロ秒精度のタイマーは音楽関連では必須なので、これを自分用に変換。
ググったらあんまりいいのがなかったので自分で解決。

LONGLONG MyGetNowHiPerformanceCount(void){
LARGE_INTEGER liFreq;
LARGE_INTEGER liNowTime;
QueryPerformanceFrequency(&liFreq);
QueryPerformanceCounter(&liNowTime);
return ((liNowTime.QuadPart * 1000 * 1000) / liFreq.QuadPart) ;
}

これでマイクロ秒精度のタイマーが取得できる。

周波数はアプリの最初に一度だけ取ってきたら良いらしい。その時に0が返って
来たら、そのシステムがこの関数に対応してないそうなので、ミリ秒系のを使う
しかないらしい。timeGetTime()とかを1000倍してあげればいいのかしら。

0 件のコメント:

コメントを投稿