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);
このコードは、1台のマシン(HP dc7900デスクトップ)では正しく機能しますが、2台の新しいマシン(HP 630ラップトップ)では機能しません。XPを実行しているすべて。
APIドキュメントによると、この例外は「指定されたGraphicsConfigurationが3Dレンダリングをサポートしていない」ことを意味します。どういう意味ですか?「優先設定」はおそらくOSから取得されたものであり、実際に可能なことを反映しています...しかし、私は少し迷っています。
バグレポートは、代替としてこのコードを提案しています:
GraphicsConfigTemplate3D template = new GraphicsConfigTemplate3D();
GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().
getDefaultScreenDevice().getBestConfiguration(template);
Canvas3D c3d = new Canvas3D(gc);
しかし、それは何も変わりません。
同様の 問題は、グラフィックアダプタの設定を変更するか、別のレンダラーを選択することで解決されたようです。たとえば、ビット深度を16に減らすか、Javaを-Dj3d.rend=d3d
で実行しますが、何も変更されません。