0

JavaFX 通过在屏幕上显示简单的浮动文本确实消耗了我的 CPU,这让我有点惊讶。

我的问题是是否有任何选项调整来为文本等节点打开硬件加速?渲染 2D 图元时使用GPU而不是 CPU?

这是在我的 2.53Mhz core 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);
         }]}}
4

3 回答 3

0

VBox { cache: true content: textNodes transforms: bind Transform.translate(0, yoffset); ...

--

缓存:系统的性能提示,指示该节点应缓存为位图。

于 2009-08-03T20:55:17.503 回答
0

你玩过 Timeline 的帧率变量吗?降低这可能会有所帮助。

(帧率描述:此动画将运行的最大帧率,以每秒帧数为单位。)

可能不会有影响,但 KeyFrame 有一个“canSkip”选项。

于 2009-08-03T03:59:26.640 回答
0

从 1.5 到 6,Sun 在这方面做了很多工作,但我不知道其中有多少过滤到了 Apple 的 JRE 实现中。为了比较,您是否可以更新到较新的 JRE,例如 1.6?如果您无法运行最新版本的 OSX,因此无法在新兵训练营中使用 Windows 机器,或者任何值得尝试的后来的 Sun 参考机器,以了解您的进展情况。

在 JavaFX 论坛上发帖可能也值得 - http://forums.sun.com/forum.jspa?forumID=932

Sun 通常很擅长应对这些问题。

于 2009-08-03T11:25:22.513 回答