だから今、C ++には一人称カメラがあり、コントロールは問題なく、カメラはうまく動きます。しかし、私の唯一の問題は、カメラの速度が期待したものではないことです。説明させてください。
(3Dシーン)
10個のオブジェクト -> カメラの速度が速い
1000 オブジェクト -> カメラ速度が遅い
したがって、基本的に私がしていることは、次のように時間をかけて倍増することです:
Newpos += 速度 * DeltaTime;
それでも、私のプログラムにやるべきことがたくさんあるときは、カメラの速度が大幅に低下します! ここで何が起こっているのですか、私は何を間違っていますか?
タイムコード(結果は問題ないようで、秒単位です):
double DeltaTime::milliseconds_now()
{
static LARGE_INTEGER s_frequency;
static BOOL s_use_qpc = QueryPerformanceFrequency(&s_frequency);
if (s_use_qpc) {
LARGE_INTEGER now;
QueryPerformanceCounter(&now);
return (1000LL * now.QuadPart) / s_frequency.QuadPart;
} else {
return GetTickCount();
}
}
void DeltaTime::OnStart()
{
//ticks = (float)GetTickCount();
QueryPerformanceFrequency( &m_liPerformanceFrequency);
}
float DeltaTime::GetDelta()
{
return ((float)dTime/(float)1000000.0f);
}
void DeltaTime::OnFinish()
{
if (timeFirst)
{
//ticks = 0;
dTime = 0;
timeFirst = false;
return;
}
//ticks = ((float)ticks = (float)GetTickCount() - (float)ticks);
QueryPerformanceCounter( &liPerformanceCount);
dTime = double(liPerformanceCount.QuadPart)/double(m_liPerformanceFrequency.QuadPart);
}
フレーム:
void OnFrame(...)
{
...
timeHandler.OnFinish();
timeHandler.OnStart();
...
}
ありがとうございました