我有点惊讶,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