我的應用程序需要幾秒鐘才能顯示其中包含Canvas3D
的第一個窗口。我已經介紹過它,發現瓶頸在SimpleUniverse.getPreferredConfiguration()
;第一次通話需要三到四秒鐘,並且在場景可以被呈現之前調用必須調用。如何讓Java3D啓動速度更快?
我使用Direct3D渲染器(-Dj3d.rend=d3d
),因爲OpenGL渲染器在我的圖形卡上崩潰。我有一個運行單個顯示器的集成ATI卡。
我的應用程序需要幾秒鐘才能顯示其中包含Canvas3D
的第一個窗口。我已經介紹過它,發現瓶頸在SimpleUniverse.getPreferredConfiguration()
;第一次通話需要三到四秒鐘,並且在場景可以被呈現之前調用必須調用。如何讓Java3D啓動速度更快?
我使用Direct3D渲染器(-Dj3d.rend=d3d
),因爲OpenGL渲染器在我的圖形卡上崩潰。我有一個運行單個顯示器的集成ATI卡。
減速的原因是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秒的啓動時間。
昨天我剛剛發現了這個解決方法,所以我正在公開記錄,所以我不會再失去它。 – 2009-02-03 17:05:19