1
我在玩遊戲引擎中的對象時遇到了與計時器相關的問題。幼體幾乎是正確的,並且當我將幼體應用於移動或旋轉的物體時,除了每隔幾秒之外,它看起來就好像物體快速閃爍到之前的位置,然後繼續平穩移動。計時器的延遲問題
在窗口模式下運行引擎會給我1500〜fps,但是如果我以全屏模式運行vsync鉗位至60fps,毛刺會更頻繁地發生。
我一直在試圖找到一個很好的資源或lerping的解釋,以及如何我可以改善我有什麼。
爲制定蜱差距我用:
float World::GetTickGap()
{
float gap = (float) (TimeMs() - m_lastTick)/m_tickDelay;
return gap > 1.f ? 1.f : gap;
}
我的更新功能:
m_currentTick = TimeMs();
if(m_currentTick > m_lastTick+m_tickDelay)
{
m_lastTick = m_currentTick;
//Update actors
}
呈現每個演員我給剔差距爲他們自己的立場之間的線性插值然後當。
我lerping功能:
float math::Lerp(float a, float b, float t)
{
return a + t*(b-a);
}
而且lerping函數的例子被稱爲:
renderPosition.x = (math::Lerp(m_LastPosition.x, m_Position.x, tickDelay));
我不確定在哪裏在試圖解決這一問題入手。據我所知,這是功能的時間問題。儘管其他任何事情都會以不變的速度引起性能的小幅下降?
任何有關這個問題的幫助將不勝感激。 :)
1500或150?我不知道許多顯示器的刷新率足夠高,足以正確顯示1500 fps,更不用說人眼可以察覺的這樣的速率。 – JAB
最後一行中的「tickDelay」與第一行中的「TickGap」相同? – AShelly
顯示器本身只有60的能力,但引擎告訴我什麼時候不在vsync下能夠在一秒鐘內繪製世界1500次。當我開始渲染多個對象時,我確實希望這個數字下降。 – Crabbo