Raspberry Pi Zero W上的JavaFX:缓慢的过渡效果(低fps)

时间:2018-11-26 06:59:10

标签: java javafx raspberry-pi

我快速又肮脏地使用javafx编写了一个非常小的图像幻灯片演示应用程序,以在我的Raspberry Pi Zero W上运行。在此应用程序中,我使用FadeTransition来处理图像。一切正常,但不幸的是,它的速度很慢,因此淡入淡出过渡看起来不流畅(fps太低)。

首先,我将vRam增加到128Mb(之前我也尝试过256Mb)。然后,我以各种组合使用这些参数:

-Dprism.forceGPU = true

-Dprism.order = j2d,sw

-Dsun.java2d.opengl = true

我什至将pi超频到1100Mhz。但是问题仍然存在,过渡效果仍然很慢。

我还尝试了在没有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());
   }
  }
 }
}

0 个答案:

没有答案