2009-08-02 2 views
0

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

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

Вот простой пример, который потребляет до 40% процессора на моем 2.53Mhz ядре 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); 
     }]}} 

ответ

0

Вы играли с переменной частоты кадров Timeline? Снижение может помочь.

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

Вероятно, не будет иметь влияние, но KeyFrame имеет опцию «canSkip».

+0

Частота кадров хорошая. Все гладко, как должно быть. Но зачем потреблять CPU, а не GPU? –

+0

(WinXP run, Java FX 1.2, Java 1.6). Если мышь перемещается по окну, частота кадров, даже 10, кажется, не имеет большого значения. Высокий процессор. Если мышь выключена, процессор работает меньше, а нижний - с более низкими кадрами. Это подсказывает мне, что проблема действительно не в рендеринге кадров. – Refactor

+0

Помещение всего текста в один текстовый узел и отображение, которое по-прежнему имеет одинаковую проблему с ЦП, когда мышь перемещается по окну (хотя изображение в моей системе, безусловно, более плавное, даже при частоте кадров 10.). blockmouse: true не имеет значения. – Refactor

0

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

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

ВС, как правило, довольно хорошо реагирует на них.

+0

Я запустил этот образец на WinXp со схожими характеристиками оборудования и получил почти такой же результат, когда наводил мышь на текст. –

0

VBox { кэша: истинно содержание: textNodes трансформирует: связывать Transform.translate (0, YOffset); ...

-

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

+0

Хороший! Но поскольку я упомянул образец просто для симуляции прокрутки текста, текстовые элементы будут меняться все время, пока текст прокручивается. –