0

JavaFX が単純なフローティング テキストを画面に表示することで CPU を消費することに少し驚いています。

私の質問は、テキストのようなノードのハードウェア アクセラレーションを有効にするオプションの微調整はありますか? 2D プリミティブのレンダリング時に CPU ではなくGPUを使用するには?

これは、私の 2.53Mhz コア 2 デュオ + Nvidia 9600M GT で最大 40% の CPU を消費する簡単な例です。OS: Mac OS X. JavaFX 1.2; JRE1.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

Sunは、これについて1.5から6まで多くの作業を行いましたが、AppleのJRE実装にどれだけフィルターされたかはわかりません。比較のために、1.6などの新しいJREに更新することは可能ですか?最新バージョンのOSXを実行できず、したがってブートキャンプで利用可能なWindowsマシンを使用できない場合、または後のSunリファレンスマシンの1つを試して、どのように動作するかを確認する価値がある場合。

JavaFXフォーラムに投稿する価値があるかもしれません-http ://forums.sun.com/forum.jspa? forumID =932

太陽は通常、これらに対応するのがかなり得意です。

于 2009-08-03T11:25:22.513 に答える
0

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

--

cache: このノードをビットマップとしてキャッシュする必要があることを示す、システムへのパフォーマンスのヒント。

于 2009-08-03T20:55:17.503 に答える
0

Timeline のフレームレート変数で遊んだことはありますか? それを下げることは助けになるかもしれません。

(フレームレートの説明: このアニメーションが実行される最大フレームレート (1 秒あたりのフレーム数)。)

おそらく影響はありませんが、KeyFrame には「canSkip」オプションがあります。

于 2009-08-03T03:59:26.640 に答える