我有点惊讶JavaFX通过在屏幕上显示简单的浮动文本来消耗我的CPU。
我的问题是否有任何选项调整可以为文本等节点启用硬件加速?在渲染2D基元时使用 GPU 而不是CPU?
这是一个简单的例子,在我的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);
}]}}
答案 0 :(得分:0)
你玩过Timeline的帧率变量吗?降低可能会有所帮助。
(帧速率描述:此动画运行的最大帧速率,以每秒帧数为单位。)
可能没有影响,但KeyFrame有一个“canSkip”选项。
答案 1 :(得分:0)
Sun从1.5到6开始做了很多工作,但我不知道它有多少过滤到Apple的JRE实现。为了比较,您可以更新到更新的JRE,例如1.6吗?如果您无法运行最新版本的OSX,因此无法在新手训练营中使用Windows计算机,或者无需尝试其中一个Sun参考计划,以了解您的使用情况。
JavaFX论坛上可能还值得发帖 - http://forums.sun.com/forum.jspa?forumID=932
Sun通常很擅长回应这些。
答案 2 :(得分:0)
VBox { cache:true content:textNodes transforms:bind Transform.translate(0,yoffset); ...
-
cache:系统的性能提示,指示此节点应缓存为位图。