lunarさんどうも、DXライブラリの管理人です。
ご報告有難うございます。
調べてみたところ、Borland C++ Compiler 5.5 版のDXライブラリでは
最高精度が2000μ秒となってしまっていました。
修正版をアップしましたので、宜しければお試しください。m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
ただ、今回私の環境で発見した現象はある時点からではなく、常になので
lunarさんが遭遇した現象とは違うものだと思います。
とりあえず修正版のライブラリで以下の様なテストプログラムを組んで
試してみた限りでは途中でカウンタの精度が下がることはありませんでしたので、
宜しければlunarさんの環境でも正常な値が表示されるかお試しになってみて下さい。m(_ _)m
(因みに GetNowHiPerformanceCount 関数自体が少々重いので画面に表示される値は
1ではなく10〜80あたりをふらふらすると思います(- -;)
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
LONGLONG time, time2;
int flag;
// ウインドウモードで起動
ChangeWindowMode( TRUE );
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1;
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK );
// メインループ
flag = TRUE;
while( ProcessMessage() == 0 )
{
// 画面のクリア
ClearDrawScreen();
// タイマーの精度を測る
time = GetNowHiPerformanceCount();
while( ( time2 = GetNowHiPerformanceCount() ) - time == 0 ){}
time = time2 - time;
// 精度を描画
DrawFormatString( 0, 0, GetColor(255,255,255), "%I64d", time );
// 裏画面の内容を表画面に反映
ScreenFlip();
// 何かキーが押されたらウインドウモードを切り替える
if( GetInputChar( TRUE ) != 0 )
{
flag = !flag;
ChangeWindowMode( flag );
SetDrawScreen( DX_SCREEN_BACK );
}
}
// DXライブラリの後始末
DxLib_End();
// ソフトの終了
return 0;
}