2016-07-13 83 views
7

我使用新的Qt 3D API在計算強度計算過程中顯示3D場景。該場景僅作爲對用戶輸入的響應而改變。但是,Qt 3D的默認行爲似乎將場景的幀速率鎖定爲某個較高的常量值,在這種情況下會佔用不可接受的資源量。如何在Qt 3D中控制幀頻?

有沒有辦法控制Qt 3D中的幀頻?理想情況下,我只想在對場景進行更改時渲染一個新幀,但將其降低到較小的固定值也足夠。 Qt 3D文檔很少,我一直無法找到一種方法去做這些事情。

編輯:我設法找到並將QRenderSettings::OnDemand應用於我的根節點和框架圖,但它似乎沒有效果,但this意味着它應該,因爲我使用的是Qt 5.7。任何額外的投入都會非常受歡迎(即使它只是保證評論)。

編輯2:安裝Fraps並直接測量幀速率後,看起來該場景實際上只是在應用QRenderSettings :: OnDemand時根據需要渲染幀。如果沒有這個,幀速率保持在60fps,這正好是我的屏幕刷新率。 然而,,程序繼續消耗大量的CPU時間,同時啓用Qt 3D空轉,無論是否顯示3D窗口。我開始認爲這是一個與幀率無關的單獨的Qt 3D問題,並且可能會相應地提出一個新問題。

+0

你確定它與你的圖形沒有關係嗎? –

+1

在什麼fps運行,什麼是您的偏好最高的fps? –

+0

這可能值得一看。它可能不會解決它,但它可能會解決這個問題。 http://stackoverflow.com/questions/36181532/qt-qapplication-framerate-drop-when-maximizing-window –

回答

2

這樣做的最好方法可能是在頭文件<FrameRateRange>中使用類FrameRateRange。這個類有兩個公共職能:FrameRateRange()FrameRateRange(qreal minimumFrameRate, qreal maximumFrameRate)qreal是在後一個函數中出現在兩個參數中的參數。這是在頭文件<QtGlobal>中聲明的全局typedefminimummaximum是以每秒幀數的幀速率。來自herehere的更多信息。

+1

FrameRateRange似乎與Qt 3D完全無關,所以我不能接受這個答案,但由於您是唯一可以回答的問題,而且您的問題有助於我更好地瞭解這個問題,所以我很可能很快就會獎勵您的賞金。 –