Javafx 2d рендеринг текста ускоряется - PullRequest
0 голосов
/ 03 августа 2009

Я немного удивлен, что JavaFX действительно потребляет мой процессор, показывая простой плавающий текст на экране.

Мой вопрос Есть ли возможность настроить аппаратное ускорение для таких узлов, как Text? Использовать GPU , а не CPU при рендеринге 2D-примитивов?

Вот простой пример, потребляющий до 40% процессора на моем 2,53 МГц Core 2 Duo + Nvidia 9600M GT. ОС: Mac Os X. JavaFX 1.2; JRE 1,5

Редактировать: Я добавил анимацию в пример, чтобы просто имитировать прокрутку текста. Вы можете попытаться добиться того же потребления ЦП, прокручивая ListBox или некоторое изображение без остановки.

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 голосов
/ 03 августа 2009

Sun проделала большую работу над этим, начиная с 1,5 и до 6, но я не знаю, сколько из этого отфильтровано до реализации JRE Apple. Для сравнения возможно ли обновление до новой JRE, такой как 1.6? Если вы не можете запустить последнюю версию OSX и, следовательно, не можете сделать это, у вас есть машина с Windows, доступная в загрузочном лагере, или что-то еще, возможно, стоит попробовать одну из более поздних справочных версий Sun, чтобы увидеть, как вы попали.

Может также стоить пост на форуме JavaFX - http://forums.sun.com/forum.jspa?forumID=932

Солнце обычно довольно хорошо реагирует на них.

0 голосов
/ 04 августа 2009

VBox { кеш: есть содержание: текстовые узлы transforms: связать Transform.translate (0, yoffset); ...

-

кеш: подсказка производительности системы, указывающая, что этот узел должен быть кэширован как растровое изображение.

0 голосов
/ 03 августа 2009

Играли ли вы с переменной частоты кадров временной шкалы? Понижение, которое могло бы помочь.

(Описание частоты кадров: максимальная частота кадров, при которой будет выполняться эта анимация, в кадрах в секунду.)

Вероятно, не окажет влияния, но в KeyFrame есть опция canSkip.

...