7

我的应用程序需要几秒钟来显示第一个带有 a 的窗口Canvas3D。我已经对其进行了分析,发现瓶颈在SimpleUniverse.getPreferredConfiguration(); 第一次调用需要三四秒,必须在渲染场景之前调用。

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

4

1 回答 1

12

速度变慢的原因GraphicsDevice.getConfigurations()是 使用的SimpleUniverse.getPreferredConfiguration(),在某些系统上非常慢。请参阅这个 java.net 论坛主题,它链接到这个 Java3D 错误,而后者又链接到这个 Sun 错误

问题是::DescribePixelFormatWin32 调用很慢 - 最多需要 60 毫秒才能完成。...
使用建议的解决方法(消除 [原文如此] 有问题的 win32 调用),时间显着改善(例如,0 毫秒)。

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

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

... 一些将 OpenGL 与 Java 结合使用的应用程序可能无法正常工作。

但由于我一直在使用 Direct3D,所以这不是问题。这将启动时间缩短了 3.2 秒。

于 2009-02-03T17:04:02.727 回答