如何让Java3D更快启动?

时间:2009-02-03 17:03:50

标签: java optimization java-3d

我的应用程序需要几秒钟才能显示第一个窗口,其中包含Canvas3D。我对它进行了分析,发现瓶颈在SimpleUniverse.getPreferredConfiguration();第一个调用需要三到四秒,并且在渲染场景之前必须调用

我正在使用Direct3D渲染器(-Dj3d.rend=d3d),因为OpenGL渲染器在我的显卡上崩溃了。我有一个运行单个显示器的集成ATI卡。

1 个答案:

答案 0 :(得分:12)

减速的原因是GraphicsDevice.getConfigurations()使用的SimpleUniverse.getPreferredConfiguration()在某些系统上非常慢。请参阅this java.net forum thread,其链接到this Java3D bug,后者又链接到this Sun bug

  

问题是::DescribePixelFormat Win32调用很慢 - 需要   最长可达60ms。   ...
  使用建议的解决方法(elminats [sic]违规的win32调用)   时间显着改善(比如0ms)。

提到的解决方法是-Dsun.awt.nopixfmt=true传递给JVM ,这会使基础本机代码不会调用DescribePixelFormat

这显然不是一个完美的解决方案:

  某些人   使用OpenGL和Java的应用程序可能无法正常工作。

但是因为我还在使用Direct3D,所以这不是问题。 这比启动时间缩短了3.2秒。