マイコミジャーナル

知りたい!を刺激する総合専門サイト


  1. エンタープライズ

  2. ニュース

Java SE 6: 新しいJava2DレンダリングエンジンとJOGLの統合

2005/09/15

杉山貴章

来年の夏頃にリリースされる予定のJava SE 6(開発コードMustang)では、開発の目標の1つとしてデスクトップ環境の強化が掲げられている。そのうちのJava2D APIに関する拡張として、Java2DにおけるOpenGLレンダリングの高速化がある。

Mustangでは、Java2DにおけるOpenGLのレンダリングを高速化するためにパイプライン処理の実装が見直される。既存のレンダリングエンジンでは複数スレッドによるレンダリングを並行してネイティブのグラフィックライブラリで処理させるという実装方法が採用されていた。これに対してMustangではシングルスレッドレンダリングを採用、複数のスレッドからのレンダリング要求をパイプラインによって管理し、効率よくグラフィックライブラリに渡すようになる。このシングルスレッドレンダリングの実装はMustangの開発版リリースbuild 27ですでに実装されており、J2SE 5.0の実装に対して大幅なパフォーマンスの向上が確認されている。

一方、JavaプログラムでOpenGLを使うために古くから利用されているAPIとしてJOGL(Java Bindings for OpenGL)がある。JOGLはJSR 231で標準化されているAPIで、JavaコードからOpenGLネイティブライブラリへのバインディングを提供する。JOGLではGLJPanelというOpenGLに対応した軽量コンポーネントを提供しており、これを使用することでSwingアプリケーション内でOpenGLによる3Dグラフィックスの描画が可能になる。しかし、既存の実装ではこのGLJPanelを用いたレンダリングは非常にパフォーマンスが悪いという問題があった。

今月8日に公開されたMustang build 51において、JOGLのGLJPanelから、新しいシングルスレッドレンダリングによる実装を利用するための機能が実装された。これによってGLJPanelのパフォーマンスは大幅に向上し、次のような効果が得られるという。

  • OpenGLレンダリング上でのSwingコンポーネントのオーバレイ
  • 様々なSwingウィジット上での3Dグラフィックスの利用
  • Java2Dレンダリング上での3D OpenGLグラフィックスの描画
  • OpenGLレンダリング上でのJava2Dグラフィックスの描画

なお、JOGLを利用したデモプログラムはjogl-demosプロジェクトサイト上で公開されている。

個人向けPCの性能が向上したことで、デスクトップアプリケーションにも充実した表現能力が求められるようになってきた。このことはLG3D(Project Looking Glass)などへの関心の高さにも現れている。今後もMustangにおけるデスクトップJavaへの取り組みに注目していきたい。


特別企画


注目サイト