GraphicsConfiguration 與 Canvas3D 不相容



我在 Java 应用程序中遇到以下异常:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException:
Canvas3D: GraphicsConfiguration is not compatible with Canvas3D
    at javax.media.j3d.Canvas3D.checkForValidGraphicsConfig(Canvas3D.java:965)
    at javax.media.j3d.Canvas3D.<init>(Canvas3D.java:1032)
    ...etc...

Canvas3D 的实例化方式如下:

GraphicsConfiguration graphicsConfiguration = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(graphicsConfiguration);

此代码在一台计算机(HP dc7900 台式机)上正常工作,但在几台较新的计算机(HP 630 笔记本电脑)上无法正常工作。 所有正在运行XP。

API 文档说,此异常意味着"指定的图形配置不支持 3D 渲染"。 那是什么意思? "首选配置"大概是从操作系统中获得的,因此反映了实际可能的情况......但我有点迷茫。

错误报告建议将此代码作为替代方法:

GraphicsConfigTemplate3D template = new GraphicsConfigTemplate3D();
GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().
getDefaultScreenDevice().getBestConfiguration(template);
Canvas3D c3d = new Canvas3D(gc);

但这并没有改变任何东西。

类似的问题似乎已经通过修改图形适配器设置或选择不同的渲染器来解决,例如:将位深度减少到 16,或使用 -Dj3d.rend=d3d 运行 java,但这样做不会改变任何东西。

事实证明,这只是Java版本不兼容:我从1.7降级到1.6,一切正常。

相关内容

  • 没有找到相关文章

最新更新