2009-02-03 78 views
7

我的应用程序需要几秒钟才能显示其中包含Canvas3D的第一个窗口。我已经介绍过它,发现瓶颈在SimpleUniverse.getPreferredConfiguration();第一次通话需要三到四秒钟,并且在场景可以被呈现之前调用必须调用如何让Java3D启动速度更快?

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

回答

12

减速的原因是SimpleUniverse.getPreferredConfiguration()使用的GraphicsDevice.getConfigurations()在某些系统上速度很慢。见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秒的启动时间。

+0

昨天我刚刚发现了这个解决方法,所以我正在公开记录,所以我不会再失去它。 – 2009-02-03 17:05:19