簡體   English   中英

setCache()和CacheHint如何在JavaFX中協同工作?

[英]How do setCache() and CacheHint work together in JavaFX?

關於JavaFX,我有以下問題:

  1. 我是否需要在Node上使用setCache(true)來設置由setCacheHint()設置的緩存提示才能實際產生任何效果?

  2. 是否應該調用setCache實際上提高性能,即幀速率的某些時間或大部分時間? 當我使用setCache(true)並且我應用縮放和其他變換時,我無法觀察到幀速率的任何變化。

我是否需要在Node上使用setCache(true)來設置由setCacheHint()設置的緩存提示才能實際產生任何效果?

是。

緩存屬性是系統提示是否應該緩存節點渲染(作為內部圖像)的提示。

cacheHint屬性向系統提示節點上預期的變換,以便可以針對那些變換類型優化高速緩存操作(例如,高速緩存提示旋轉,縮放或速度等)。

如果節點根本沒有設置為高速緩存,則cacheHint無關緊要。

是否應該調用setCache實際上提高性能,即幀速率的某些時間或大部分時間?

不必要。 JavaFX的默認幀速率上限為60fps,因此如果性能足夠好,即使沒有任何緩存提示也達不到幀速率,您將看不到任何明顯的差異。 這是許多基本動畫和變換的情況。

即使幀速率沒有提高,緩存提示也可以使每個變換的執行效率更高,從而減少CPU或GPU密集度(通常通過交易視覺質量)。

可能還有其他因素會對您的幀速率產生更大的影響。 這些事情可能與可緩存項的渲染速度無關(例如,在游戲循環期間在JavaFX應用程序線程上執行的長時間運行操作或不斷變化的節點內容)。


我在我編寫的小游戲中使用了setCache(true)setCacheHint(CacheHint.SPEED)的組合,其中包含多個同時動畫節點,其中多個效果和半透明應用於節點。 這些設置確實加快了速度(Mac OS X,Macbook Air 2012,Java FX 2.2)。


您還可以手動獲取節點樹的快照 ,並使用快照Image手動替換節點樹,而不是依賴於渲染系統的提示。 這種快照技術並不總是最好的方法,但如果提示在您的情況下效果不佳,它確實可以為您提供替代方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM