我有點驚訝,JavaFX通過在屏幕上顯示簡單的浮動文本來消耗我的CPU。Javafx 2d文本渲染加速
我的問題是否有任何選項調整來打開像文本節點的硬件加速?使用GPU而不是CPU渲染2D基元時?
這是一個簡單的例子,在我的2.53Mhz核心2 duo + Nvidia 9600M GT上消耗高達40%的cpu。操作系統:Mac Os X. JavaFX 1.2; JRE 1.5
編輯:我把動畫中的例子只是模擬文本滾動。您可以嘗試通過滾動ListBox或某些圖片而不停止來實現相同的CPU消耗。
package text2dacceleration;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.transform.Transform;
import javafx.scene.text.Text;
import javafx.animation.*;
def longLine = for (i in [1..45]) "{i}";
def textNodes = for (i in [1..64]) Text{content: "{longLine} line number {i}"};
var yoffset = 0.0;
Timeline {
repeatCount: Timeline.INDEFINITE
autoReverse: true
keyFrames: [
KeyFrame { time: 0s values: [yoffset => 0.0]}
KeyFrame { time: 1s values: [yoffset => 10.0]}]
}.play();
Stage {
title: "Text nodes"
width: 800
height: 600
resizable: false
scene: Scene {
content: [
VBox {
content: textNodes
transforms: bind Transform.translate(0, yoffset);
}]}}
幀率很好。一切都很順利,因爲它應該是。但爲什麼要消耗CPU而不是GPU? – 2009-08-03 05:20:15
(WinXP運行,Java FX 1.2,Java 1.6)如果鼠標在窗口上移動,幀速率甚至爲10,似乎沒什麼區別。高cpu。如果鼠標關閉窗口,則cpu運行較少,而較低的幀率則會降低。這表明這個問題實際上不是框架的渲染。 – Refactor 2009-08-03 17:50:17
當鼠標移動到窗口上時,將所有文本放入單個文本節點並顯示相同的CPU問題(儘管在我的系統中,即使幀速率爲10,我的系統上的圖像也一定比較平滑)。 blocksmouse:true沒有區別。 – Refactor 2009-08-03 18:18:32