Javafx 2d文本渲染加快

时间:2009-08-02 20:23:16

标签: 2d javafx acceleration

我有点惊讶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);
         }]}}

3 个答案:

答案 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:系统的性能提示,指示此节点应缓存为位图。