【问题标题】:How can I make Java3D start faster?如何使 Java3D 启动更快?
【发布时间】:2010-10-05 05:05:42
【问题描述】:

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

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

【问题讨论】:

    标签: java optimization java-3d


    【解决方案1】:

    速度变慢的原因是SimpleUniverse.getPreferredConfiguration()使用的GraphicsDevice.getConfigurations()在某些系统上速度很慢。参见this java.net forum thread,它链接到this Java3D bug,而后者又链接到this Sun bug

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

    提到的解决方法是-Dsun.awt.nopixfmt=true传递给JVM,这样底层的native代码就不会调用DescribePixelFormat

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

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

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

    【讨论】:

    • 我昨天才发现这个解决方法,所以我要公开记录,以免再次丢失。
    • 如何将 -Dsun.awt.nopixfmt=true 传递给 jvm?或如何停止在 java3D 中调用图形配置对象?
    猜你喜欢
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    相关资源
    最近更新 更多