J2SE 5.0 での Java 2DTM の新機能 |
2D 目次 |
- すべての BufferedImage のキャッシュ
- イメージのハードウェア高速化を制御するメソッド
- ハードウェア高速化レンダリングに対する OpenGL によるサポート
- CUPS プリンタに対する Solaris および Linux のサポート
- バイキュービック補間処理
- ファイルとストリームからのフォントの作成
- テキストレンダリングのパフォーマンスと信頼性の向上
- 多言語のテキストレンダリング
すべての BufferedImage のキャッシュ
J2SE 5.0 では、
BufferedImage
コンストラクタで作成されたすべてのイメージが管理対象のイメージとなり、ビデオメモリ内にキャッシュすることができるようになりました。または、リモート X サーバの場合、X サーバ側にキャッシュできます。以前の実装では、Component
createImage(int, int)
メソッドまたはGraphicsConfiguration
createCompatibleImage
メソッドで作成された互換性のあるイメージのみを管理していました。管理されるイメージは、管理されないイメージに比べて、一般的にパフォーマンスが良好です。イメージのハードウェア高速化を制御するメソッド
この変更に対応するバグレポートは、4881082 です。
Image
クラスには、ハードウェアの高速化に関連する 3 つの新しいメソッドがあります。以前はVolatileImage
内でのみ定義されたgetCapabilities
メソッドによって、イメージが現在高速化されているかどうかを判断できるようになります。ほかの 2 つのsetAccelerationPriority
メソッドおよびgetAccelerationPriority
メソッドでは、イメージの高速化の重要性の程度についてのヒントを設定または取得することができます。
GraphicsConfiguration
クラスには、透明なVolatileImage
を作成できる 2 つの新メソッド、createCompatibleVolatileImage(int, int, int)
およびcreateCompatibleVolatileImage(int, int, ImageCapabilities, int)
があります。
注: J2SE 5.0 の段階では、これらのメソッドは完全に機能しません。setAccelerationPriority
によって設定された値は無視され、createCompatibleVolatileImage
メソッドで作成されたイメージは常にハードウェアの高速化が行われるわけではありません。Linux および Solaris システムでは、OPAQUE
VolatileImage
のみがハードウェア高速化されます。Microsoft Windows システムの場合、J2SE 5.0 のcreateCompatibleVolatileImage
で作成されたイメージのハードウェアの高速化が行われるのは、ハードウェアが高速化をサポートし、しかも次の条件の 1 つが真の場合のみです。これらのメソッドは、今後のリリースで完全に実装されることが期待されます。
- 透明度の値が
OPAQUE
である- 透明度の値が
TRANSLUCENT
であり、実行時に特に透過性高速化が有効にされている (sun.java2d.translaccel=true
)
ハードウェア高速化レンダリングに対する OpenGL によるサポート
この変更に関連するバグレポート: 4607536 および 5008045
J2SE 5.0 には、Java 2D 用の新しい OpenGL ベースのパイプラインが含まれています。このパイプラインにより、テキスト、イメージ、ライン、塗りつぶしのプリミティブなどの単純なレンダリング操作と同様に、複雑な変換、ペイント、合成およびクリッピングなどの操作にもハードウェアの高速化が提供されます。このパイプラインは、Solaris、Linux、および Microsoft Windows など、すべてのプラットフォームで利用可能で、現在のところ、デフォルトでは無効にされています。
メッセージを表示させないで OpenGL ベースのパイプラインを有効にするには、コマンド行に次のシステムプロパティを指定します。
-Dsun.java2d.opengl=true特定の 1 つのスクリーンに対する、OpenGL ベースのパイプラインが正常に初期化されたかどうかに関する、コンソールへの詳細な出力を行うには、次のようにして、大文字の「T」を使用して、「
True
」を指定します。-Dsun.java2d.opengl=TrueSolaris/Linux の場合、最小の要件は次のとおりです。
- ハードウェア高速化の OpenGL/GLX ライブラリがインストールされ、適切に構成されている
- OpenGL のバージョンが 1.2 以降
- GLX のバージョンが 1.3 以降
- 利用可能なステンシルバッファ付きの、少なくとも 1 つの TrueColor ビジュアル
Microsoft Windows の場合、最小の要件は次のとおりです。
- WGL_ARB_pbuffer、WGL_ARB_render_texture、および WGL_ARB_pixel_format 機能をサポートする、ハードウェア高速化ドライバ
- OpenGL のバージョンが 1.2 以降
- 利用可能なステンシルバッファ付きの、少なくとも 1 つの ピクセル形式
Solaris の OpenGL について
Solaris SPARC プラットフォーム用の高速化 OpenGL ライブラリは、次のサンのサイトから直接利用することができます。
http://wwws.sun.com/software/graphics/opengl/index.html以下のサンのフレームバッファは、OpenGL ベースの Java 2D パイプラインとともに機能します。
- Expert3D
- Expert3D Lite
- XVR-500
- XVR-600
- XVR-1000
- XVR-1200
Solaris x86 プラットフォーム用の高速化 OpenGL ライブラリは、サンのサイトから利用することができません。ただし、Xi Graphics などのサードパーティは、Solaris x86 用の OpenGL ライブラリをサポートします。
Linux の OpenGL について
ほとんどの Linux 配布版には、The Mesa 3D Graphics Library が含まれています。このライブラリは、OpenGL 仕様のソフトウェアの実装です。Mesa はハードウェア高速化を利用しないため、OpenGL ベースの Java 2D パイプラインは、デフォルトの X11 ベースのパイプラインに比べてかなり低速で実行されることになります。そのため、OpenGL ベースのパイプラインで適切なパフォーマンスを実現するために、お使いのグラフィックスハードウェア業者提供の、高速化 OpenGL ドライバをインストールすることをお薦めします。
次の Web サイトには、ダウンロード可能な高速化 OpenGL ドライバがあります。
- Nvidia (GeForce 2 以降): http://www.nvidia.com
- ATI (Radeon 8500 以降、FireGL など): http://www.atitech.com
- その他:
Microsoft Windows の OpenGL について
OpenGL ベースのパイプラインで適切なパフォーマンスを実現するために、お使いのグラフィックスハードウェア業者提供の、高速化 OpenGL ドライバをインストールすることをお薦めします。次の Web サイトには、OpenGL ベースの Java 2D パイプラインとともに機能する、ダウンロード可能な高速化 OpenGL ドライバがあります。
- Nvidia (GeForce 2 以降): http://www.nvidia.com
- ATI (Radeon シリーズ、FireGL など): http://www.atitech.com
注: Microsoft Windows で使用する Nvidia および ATI 両方の最新のドライバは、お使いのアプリケーションの描画機能に悪影響を及ぼす可能性があることが確認されています。これらのバグについては現在調査中であり、将来ドライバを更新するときに改善できるように製造元と協働しています。
CUPS プリンタに対する Solaris および Linux のサポート
この変更に関連するバグレポート: 4641868 および 4683270
Solaris および Linux システムで、CUPS (共通 UNIX プリンタシステム) プリンタとして設定されたプリンタを使用できるようになりました。この機能拡張によって、ほとんどの PostScript プリンタとレーザプリンタも含めて、CUPS にサポートされるすべてのプリンタが、Java プラットフォームで使用できるようになりました。つまり、Linux とともに低価格のプリンタを簡単に使用できます。CUPS は、IPP (インターネットプリンティングプロトコル、Internet Printing Protocol) に基づいています。
詳細については、http://www.cups.org を参照してください。
バイキュービック補間処理
この変更に対応するバグレポートは、4200154 です。
2D の実装では、バイキュービック補間処理がサポートされるようになり、要求に応じていつでも使うことができます。以前のバージョンでは、
RenderingHints
クラスによって定義されたVALUE_INTERPOLATION_BICUBIC
ヒントが優先されず、代わりにバイリニア補間処理が使用されました。現在では、バイキュービックレンダリングのヒントが優先され、新しい定数のTYPE_BICUBIC
がAffineTransformOp
に追加されました。ファイルとストリームからのフォントの作成
この変更に関連するバグレポート: 4390880 および 4468862
現在では、Type 1 フォントから
Font
オブジェクトを作成することと、Type 1 または TrueType フォントデータのどちらかを含むファイルから直接Font
オブジェクトを作成することが可能になりました。この新しい機能をサポートするために、
Font
クラスには、ファイルからFont
オブジェクトを作成する新しいcreateFont
メソッドがあります。既存のcreateFont
メソッドは、ストリームからFont
オブジェクトを作成します。新しい定数のFont.TYPE1_FONT
で、どちらかのcreateFont
メソッドに Type 1 フォントを指定します。テキストレンダリングのパフォーマンスと信頼性の向上
この変更に対応するバグレポートは、4641861 です。
テキストレンダリングのコードに対する多くの内部的な変更によって、コードの堅牢さ、パフォーマンス、およびスケーラビリティが著しく向上しました。
多言語のテキストレンダリング
この変更に対応するバグレポートは、4097028 です。
論理フォントを使用する 2D テキストレンダリングでは、多言語テキストをレンダリングするために、サポートされるすべての書記法がインストール済みのホスト OS フォントを利用できるようになりました。たとえば、タイ語のロケール環境で実行中でありながら韓国語のフォントがインストールされている場合は、タイ語と韓国語の両方がレンダリングされます。
Copyright © 1995-2004 Sun Microsystems, Inc. All Rights Reserved.
「Java 2D Feedback」ページを使ってコメントを送付してください。
Java ソフトウェア