2010-10-20 66 views
0

那麼如何?我的應用程序運行在60FPS,但我想30如何使用opengl將FPS設置爲30?

+2

經常畫一半(嚴重)。對於更詳細的答案,你可能會考慮提供更多的信息,比如你使用的是什麼框架(比如過剩)。 – Seth 2010-10-20 06:02:09

+0

60fps最有可能與顯示器刷新率同步。爲什麼*不*你想要那個? – AshleysBrain 2010-10-20 07:23:16

+0

我同意塞思。與環境的交互不是GL的職責範圍,而是平臺綁定的一部分(wgl/glx/egl/...)。你在看哪一個? – Bahbar 2010-10-20 07:28:34

回答

4

假設你有一個目標幀速率,可以測量多久它一直以來你完成渲染的最後一次。從那裏,你可以睡覺targetMsPerFrame - timeElapsed。

+0

+1同意。如果你的目標幀率是30fps,你的targetMsPerFrame是(1000/30)毫秒。 – LarsH 2010-10-20 15:59:30

3

一個字:sleep

+0

你在說什麼庫或操作系統的sleep()?許多人沒有獲得平滑幀率所需的分辨率。 – LarsH 2010-10-20 15:56:18

0

@itzWarty有關於如何設置幀率的正確答案。這被稱爲「夾緊」或「鎖定」幀速率。

但是你爲什麼要這樣做呢?如果你想避免佔用資源,夾緊幀率是好的。

否則,您可能希望儘可能快地調整幀速率,以使具有優質聲卡的人覺得他們不會浪費金錢。在這種情況下,您需要使您的動畫基於時間而不是基於幀。即根據自上一步以來經過的時間來縮放動畫步驟。例如。

x += dx * (timeNow - timePrev)/typicalDuration; // pseudoCode