Java SE 6リリース以降のDirect3Dパイプラインでは、レンダリングにDirect3D APIが使用されます。フル・スクリーン・モードではこのパイプラインがデフォルトで有効にされます(ドライバが、必要な機能とそのレンダリング品質レベルをサポートしている場合)。
次の項で説明するように、Direct3Dパイプラインを有効にし、その使用を強制することができます。
アルファ合成、アンチエイリアス、変換などのレンダリング操作を大量に使用するアプリケーションでは、Direct3Dパイプラインを有効にすることを検討してください。
ただし、このパイプラインをアプリケーションで有効にすることを決定する際には注意してください。たとえば、一部の組み込みビデオ・チップセット(大部分のノートブックで使用されているもの)は、たとえJava 2Dパイプラインの品質要件を満たしていても、Direct3D使用時には良好なパフォーマンスを示しません。
Direct3D APIの問題のトラブルシューティングを行う3つの例を次に示します。
Direct3Dパイプラインの無効化:
一部の古いビデオ・ボード/ドライバの組み合わせでは、Direct3Dパイプラインで問題(レンダリングとパフォーマンスの両方)が発生することが知られています。そのような場合にJava SE 5以降のリリースでパイプラインを無効にするには、パラメータ-Dsun.java2d.d3d=false
をJava VMに渡すか、J2D_D3D
環境変数をfalse
に設定します。
Direct3Dパイプラインの有効化:
Java SE 5以降のリリースで、ウィンドウ・モードとフル・スクリーン・モードの両方でDirect3Dパイプラインを有効にするには、パラメータ-Dsun.java2d.d3d=true
を使用するか、J2D_D3D
環境変数をtrue
に設定します。注意: パイプラインは、ドライバが最小限必要な機能をサポートしている場合にのみ有効になります。
Direct3Dパイプラインのレンダリング問題の診断:
Java SE 8リリースでは、様々なDirect3Dラスタライザを強制することで、いくつかのレンダリングの問題(ピクセルの欠落や不明瞭なレンダリングなど)を診断できます。J2D_D3D_RASTERIZER
環境変数をref
、rgb
、hal
、またはtnl
のいずれかに設定します。
これらのラスタライザの詳細は、Direct3Dのドキュメントを参照してください。デフォルトでは、通知された機能に基づいて最適なラスタライザが選択されます。具体的には、ref
ラスタライザでは、Microsoft製のリファレンスDirect3Dラスタライザの使用が強制されます。このラスタライザでレンダリングの問題が再現できない場合、その問題はほぼ間違いなくビデオ・ドライバのバグです。
rgb
ラスタライザが使用可能なのは、Direct3D SDKがインストールされている場合だけです。このSDKはMicrosoft Game Technologies Centerから取得できます。
Direct3Dパイプラインのテキスト・レンダリングでパフォーマンスや品質の問題が発生する場合、Direct3Dパイプラインのグリフ・キャッシュで、デフォルトのアルファ・テクスチャの代わりにARGBテクスチャを使用することを強制できます。これを行うには、J2D_D3D_NOALPHATEXTURE
環境変数をtrue
に設定します。