| 開発者 | JogAmp コミュニティ |
|---|---|
| 安定リリース | 2.5.0 / 2023年8月18日 |
| プレビューリリース | 該当なし / 未定 |
| 書かれた | Java、C |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | 3D コンピュータ グラフィックス ソフトウェア(ライブラリ/API) |
| ライセンス | BSDライセンス |
| Webサイト | jogamp.org/jogl/www/ |
Java OpenGL ( JOGL ) は、 Javaプログラミング言語でOpenGLを使用できるようにするラッパーライブラリです。[1] [2]もともとはKenneth Bradley RussellとChristopher John Klineによって開発され、Sun MicrosystemsのGame Technology Groupによってさらに開発されました。2010年以降、 BSDライセンスの下で独立したオープンソースプロジェクトとなっています。これは、Java Bindings for OpenGL (JSR-231) のリファレンス実装です。
JOGL は、 Java Native Interface (JNI)を使用することで、C言語プログラムで使用できるほとんどの OpenGL 機能へのアクセスを可能にします。標準の GL* 関数と GLU* 関数の両方へのアクセスを提供しますが、Java には独自のウィンドウ システム ( Abstract Window Toolkit (AWT)、Swing、およびいくつかの拡張機能)があるため、 OpenGL Utility Toolkit (GLUT) ライブラリはウィンドウ システム関連の呼び出しには使用できません。
デザイン
ベースとなるOpenGL C APIとそれに関連するウィンドウAPI [3]は、Java Native Interface (JNI)呼び出しを介してJOGLからアクセスされます。そのため、JOGLが動作するには、基盤となるシステムがOpenGLをサポートしている必要があります。
JOGL は、OpenGL 機能をオブジェクト指向プログラミングパラダイムにマッピングするのではなく、いくつかのクラスのメソッドを介して手続き型 OpenGL API を公開するだけという点で、他の Java OpenGL ラッパー ライブラリとは異なります。実際、JOGL コードのほとんどは、JOGL の作成を容易にするために特別にプログラムされたGlueGenという変換ツールによって OpenGL C ヘッダー ファイルから自動生成されています。
ステータスと標準化
2023年現在[アップデート]、JOGLはOpenGL 4.5仕様とほぼすべてのベンダー拡張機能(およびOpenCL、OpenMAX、OpenAL)へのフルアクセスを提供しています。[4]バージョン2.5.0は、 JSR-231(OpenGL用Javaバインディング)のリファレンス実装です。[5] 1.1.1リリースでは、 GLU NURBSへの限定的なアクセスが提供され、従来のGLU APIを介して曲線と曲面のレンダリングが提供されました。2.3.2リリースでは、OpenGLバージョン4.5まで、OpenGL ESバージョン3.2までのサポートが追加されました。
WaylandとVulkanのサポートが計画されている。[6]
Java2D-OpenGL 相互運用性
Java言語のJava SE 6バージョン以降、Java2D ( Java で 2 次元グラフィックスを描画するためのAPI ) と JOGL は相互運用可能になり、次のことが可能になりました。
- OpenGLレンダリングの上にSwingコンポーネント(軽量メニュー、ツールチップ、その他のウィジェット)をオーバーレイします。[7]
- Java2Dレンダリングの上に3D OpenGLグラフィックスを描画します(OpenGL アイコンのボタンについては、ここを参照してください)。
- 通常Swing ウィジェットが使用される場所であればどこでも 3D グラフィックスを使用できます。(JTable、JTree 内など)
- 3D OpenGLレンダリングの上にJava2Dグラフィックスを描画します。
チュートリアル
- OpenGL ES 2 サンプル
- Hello Triangle、gl3、gl4 Hello Triangle、テクスチャ。サンプルはJavaとKotlinで提供されています。
- Java OpenGL サンプル パック、g-truc OpenGL サンプル パックの移植。230 を超えるサンプルは、ES 2.0 から最新の GL 拡張までのほぼすべての OpenGL 機能を示しており、これらは通常AZDO (Almost Zero Driver Overhead) とも呼ばれます。
- 最新の jogl の例、Learning Modern 3D Graphics Programming の移植、Jason L. McKesson、2016 年 9 月 23 日にWayback Machineにアーカイブ。Javaと Kotlin を並べて表示。
- 即時モードのサンプル(固定機能 グラフィックスパイプラインを使用した最も単純な例)
コード例
@Override
public void display ( GLAutoDrawable描画可能) {
GL4 gl4 = drawable.getGL (). getGL4 ( ) ;
gl4.glClearBufferfv ( GL2ES3.GL_COLOR , 0 , clearColor ) ; gl4.glClearBufferfv ( GL2ES3.GL_DEPTH , 0 , clearDepth ) ;
{
FloatUtil.makeLookAt ( view , 0 , eye , 0 , at , 0 , up , 0 , tmp ) ; FloatUtil.makePerspective ( projection , 0 , reset , 45f , aspect , near , far ) ;
FloatUtil.multMatrix ( projection , view ); // projection * = view
transformPointer.asFloatBuffer () . put (投影) ; }
gl4 . glUseProgram ( programName );
gl4 . glBindVertexArray ( vertexArrayName . get ( 0 )); gl4 . glBindBufferBase ( GL2ES3 . GL_UNIFORM_BUFFER /*target*/ 、1 /*TRANSFORM0、index*/ 、bufferName . get ( 2 ) /*TRANSFORM、buffer*/ );
gl4 . glBindTextureUnit ( 0 /*拡散*/ 、textureName . get ( 0 )); gl4 . glBindSampler ( 0 /*拡散*/ 、samplerName . get ( 0 ));
gl4 . glDrawElements ( GL . GL_TRIANGLES ,要素数, GL . GL_UNSIGNED_SHORT , 0 ); }
参照
- Java Bindings for OpenGL、JOGL が実装を提供する Java コミュニティ仕様要求
- Ardor3D は、JOGLを含むOpenGLとOpenGL-ESの複数のバインディングを使用した、高性能でプロフェッショナル向けのシーングラフです。
- Elflight Engine、Webに最適化された高性能3Dゲームエンジン
- JMonkey Engine は、JOGL を含む OpenGL および OpenGL-ES の複数のバインディングを使用する、高性能なシーン グラフ ベースのグラフィックス API です。
- JOGLを使用したオンラインマルチプレイヤーゲーム、Poxnora
- JOGL を使用した MMORPG、RuneScape
- Jake2 は、低レベルグラフィック API として JOGL を含む OpenGL のいくつかのバインディングを使用するQuake IIの Java ポートです。
- Scilab、2D、3Dレンダリング用のJOGLを使用した数値計算プログラム
- ClearVolume は、ハイエンドの体積光シート顕微鏡向けに設計された、JOGL を搭載したリアルタイムのライブ 3D 視覚化ライブラリです。
- LWJGL、代替オープンソース OpenGL ラッパー ライブラリ
- Java オープンAL
- Java OpenCL
参考文献
- ^ Friesen, Jeff (2008 年 9 月 18 日). 「オープンソース Java プロジェクト: OpenGL 用 Java バインディング (JOGL)」. オープンソース Java チュートリアル. JavaWorld . 2020 年 7 月 23 日閲覧。JOGL
は、3D グラフィックスの専門家である Ken Russell (Sun Microsystems) と Chris Kline (Irrational Games) によって作成された Jungle というプロジェクトとして始まりました。
- ^ Davis, Gene (2005年2月21日). 「Hello JOGL」. JavaWorld . 2020年7月23日閲覧。
- ^ 「JOGL を使用したプラットフォームとデバイス間の 3D およびマルチメディア」(PDF) . SIGGRAPH . 2010-07-27 . 2011-02-06に閲覧。
- ^ 「JOGL - OpenGL API 用の Java バインディング」。
- ^ 「JSR-000231 Java Bindings for the OpenGL API」。Java Community Process。2011-02-06取得。Java Binding for the OpenGL API へのコミュニティの参加を最大限に促進するために、https: //jogl.dev.java.net
にある java.net の JOGL プロジェクトを使用しています。JOGL ソース コードは、リベラル ソース コード ライセンス (他の団体のライセンス コードを使用する場合を除いて、ほとんどが BSD ライセンス) の下で提供されています。数か月ごとにこのプロジェクトからコードのスナップショットを取得し、ソース コードに対して Technology Compatibility Kit を実行してから、正式な Java Binding for the OpenGL API リリースごとにリファレンス実装として公式に使用します。
{{cite web}}:外部リンク(ヘルプ)|quote= - ^ 「バグ 794 - Wayland ウィンドウ/サーフェス相互運用性の追加」 2013-08-05。
- ^ 「JOGL ユーザーガイド」。
外部リンク
- 公式サイト
- JOGL 2.3.x 仕様
- JSR-231 Java バインディング for OpenGL ウェブサイト
- ツール kiet 2009-02-09 にWayback Machineでアーカイブされました。OpenGL プログラミング ガイドの JOGL を使用した例
- NeHeのチュートリアルとサンプルコード
- お気に入りのIDEでJogAmp JOGLプロジェクトを設定する
- Viewer3D、JOGLでインタラクティブな3Dコンテンツを表示するアプレット
- Eclipse OpenGL Pack Eclipse IDE用の OpenGL プラグイン
