GraphicsConfiguration与Canvas3D不兼容

时间:2012-06-21 05:42:39

标签: java java-3d illegalargumentexception

我在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 docs表示此异常意味着“指定的GraphicsConfiguration不支持3D渲染”。那是什么意思? “首选配置”可能是从操作系统中获得的,因此反映了实际可行的内容......但我有点迷失。

bug report建议将此代码作为替代方案:

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

但它没有改变任何东西。

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

1 个答案:

答案 0 :(得分:1)

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