2009-02-03 125 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