JavaFXが画面上にシンプルなフローティングテキストを表示することによってCPUを消費するのに少し驚いています。Javafx 2dテキストレンダリングスピードアップ
私の質問には、テキストのようなノードのハードウェアアクセラレーションを有効にするオプションがありますか? GPUを使用し、2Dプリミティブをレンダリングする際にCPUを使用しないでください。
ここでは、2.53Mhzコア2デュオ+ Nvidia 9600M GTで最大40%のCPUを消費する簡単な例を示します。 OS:Mac OS X. JavaFX 1.2; JRE 1.5
編集:私はテキストのスクロールをシミュレートするだけの例でアニメーションを配置しました。リストボックスをスクロールしたり、停止していない画像を使ったりして、同じ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);
}]}}
フレームレートが良好です。すべては、それが想定されているように滑らかです。しかし、なぜGPUではなくCPUを消費するのですか? –
(WinXP実行、Java FX 1.2、Java 1.6)マウスがウィンドウ上を移動している場合、フレームレートは10の場合でもほとんど差がないようです。高いCPU。マウスがウィンドウ外にある場合、CPUは少なく実行され、フレームレートが低いほど低くなります。これは、問題は実際にフレームのレンダリングではないことを私に示唆しています。 – Refactor
すべてのテキストを1つのTextノードに入れて表示すると、マウスがウィンドウの上を移動したときに同じCPUの問題が発生します(私のシステム上のイメージは、フレームレートが10であっても非常にスムーズです)。 blocksmouse:trueは違いはありません。 – Refactor