JavaFX가 화면에 간단한 부동 텍스트를 표시하여 CPU를 소비한다는 것에 약간 놀랐습니다.Javafx 2d 텍스트 렌더링 속도 향상
내 질문 텍스트와 같은 노드에 대해 하드웨어 가속을 사용하도록 설정하는 옵션이 있습니까? GPU을 사용하고 2D 프리미티브를 렌더링 할 때 CPU를 사용하지 않으시겠습니까?
여기 내 2.53Mhz 코어 2 듀오 + Nvidia 9600M GT에서 CPU를 최대 40 %까지 소비하는 간단한 예가 나와 있습니다. OS : 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);
}]}}
프레임 속도가 좋습니다. 모든 것이 매끄럽습니다. 하지만 GPU가 아닌 CPU를 왜 소비합니까? –
(WinXP 실행, Java FX 1.2, Java 1.6) 마우스가 창에서 움직이는 경우, 10의 프레임 율로도 약간의 차이가있는 것처럼 보입니다. 높은 CPU. 마우스가 창에서 꺼져 있으면 CPU가 적게 실행되고 프레임 속도가 낮을수록 낮아집니다. 이것은 나에게 그 문제가 정말로 프레임의 렌더링이 아니라는 것을 암시합니다. – Refactor
모든 텍스트를 하나의 텍스트 노드에 넣고 마우스를 창 위로 움직일 때 동일한 CPU 문제가 생깁니다 (시스템의 이미지는 분명히 부드럽고 10 프레임 라하더라도). blocksmouse : true는 아무런 차이를 만들지 않습니다. – Refactor