我在 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 文档说这个异常意味着“指定的 GraphicsConfiguration 不支持 3D 渲染”。这意味着什么?“首选配置”可能是从操作系统中获得的,因此反映了实际可能的情况......但我有点迷失了。
错误报告建议将此代码作为替代:
GraphicsConfigTemplate3D template = new GraphicsConfigTemplate3D();
GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().
getDefaultScreenDevice().getBestConfiguration(template);
Canvas3D c3d = new Canvas3D(gc);
但这并没有改变任何东西。
类似的 问题似乎已经通过修改图形适配器设置或选择不同的渲染器来解决,例如:将位深度降低到 16,或运行 java with -Dj3d.rend=d3d
,但这样做不会改变任何东西。