JavaFX на Raspberry Pi Zero W: эффекты медленного перехода (низкие fps) - PullRequest
0 голосов
/ 26 ноября 2018

Я быстро и грязно запрограммировал очень маленькое приложение для создания слайд-шоу изображений, используя javafx для запуска на моем Raspberry Pi Zero W. В этом приложении я использую FadeTransition для изображений.Все работает нормально, но у меня, к сожалению, проблема в том, что он довольно медленный, поэтому переходы затухания не выглядят гладкими (слишком низкий fps).

Во-первых, я увеличил vRam до 128 МБ (я также пытался до 256 МБ)Затем я поиграл с этими параметрами в различных комбинациях:

-Dprism.forceGPU = true

-Dprism.order = j2d, sw

-Dsun.java2d.opengl = true

Я даже разогнал пи до 1100 МГц.Но проблема все еще остается, эффекты перехода все еще очень медленные.

Я также пытался запустить свое приложение без lightdm, поскольку я прочитал несколько раз в Интернете, что Java может записывать непосредственно в буфер отображения.Но я не мог заставить приложение работать таким образом.

У вас есть идея, если это вообще возможно, чтобы запустить это плавно на малине пи ноль?

СпасибоВы очень много!


Фрагмент моего кода Java:

FileInputStream input = null;
FadeTransition fadeIn = new FadeTransition(Duration.millis(transitionTime * 1000 / 2), imageView);
fadeIn.setFromValue(0);
fadeIn.setToValue(1.0);
fadeIn.setInterpolator(Interpolator.LINEAR);

FadeTransition fadeOut = new FadeTransition(Duration.millis(transitionTime * 1000 / 2), imageView);

fadeOut.setFromValue(1.0);
fadeOut.setToValue(0);
fadeOut.setInterpolator(Interpolator.LINEAR);

Thread t = new Thread(new Runnable() {

  @Override
  public void run() {

   while (true) {
    try {
     long currentTime = System.currentTimeMillis();

     if (currentTime > lastRefreshTime + showingTimePerImage * 1000) {

      File file = getNewRandomFileFromFolder();

      input = new FileInputStream(file.getAbsolutePath());
      Image image = new Image(input);

      fadeOut.setOnFinished(new EventHandler < ActionEvent > () {
       @Override
       public void handle(ActionEvent arg0) {
        imageView.setImage(image);
        imageView.setPreserveRatio(true);
        imageView.fitHeightProperty().bind(primaryStage.heightProperty());
        fadeIn.play();
       }
      });

      fadeOut.play();

      lastRefreshTime = currentTime;
     }
    }
   } catch (Exception e) {
    System.out.println(e.getMessage());
   }
  }
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...