LWJGL (https://www.lwjgl.org) は、グラフィックス (OpenGL/Vulkan)、オーディオ (OpenAL)、並列コンピューティング (OpenCL) アプリケーションの開発に役立つ一般的なネイティブ API へのクロスプラットフォーム アクセスを可能にする Java ライブラリです。このアクセスは直接的で高性能であると同時に、Java エコシステムに適したタイプセーフでユーザーフレンドリーな層でラップされています。
LWJGL は実現テクノロジーであり、低レベルのアクセスを提供します。これはフレームワークではなく、ネイティブ ライブラリが公開するものよりも高レベルのユーティリティは提供しません。そのため、初心者プログラマは、ライブラリを直接操作する前に、LWJGL を利用するフレームワークまたはゲーム エンジンのいずれかを試すことをお勧めします。
LWJGL はオープンソース ソフトウェアであり、無料で自由に利用できます。
役立つリンク:
接触:
貢献したい場合は、プロジェクトの構造、インストール手順、構成オプションの概要についてドキュメント/README を参照してください。
バージョン3.1.0
以降、LWJGL はモジュールのセットとして配布されます。コア モジュールのみが必須で、すべてのバインディングはオプションです (ただし、一部のバインディングは他のバインディングに依存します)。 LWJGL をダウンロードする最も簡単な方法は、Web サイトのビルド コンフィギュレーターを使用することです。
ビルド コンフィギュレーターは、既存のプロジェクトに追加できるMaven および Gradle宣言を生成します。これは、開発中に LWJGL を使用する最も簡単な方法です。
LWJGL は、単純な JAR ファイルのセットとしてダウンロードすることもできます。各モジュールは次のファイルで構成されます。
LWJGL アプリケーションをコンパイルして実行するには、コア モジュールのベース JAR ファイルとネイティブ JAR ファイル、および使用される各バインディングをクラスパスに追加する必要があります。 LWJGL はネイティブを一時フォルダーに抽出して自動的にロードするため、それ以上の構成は必要ありません。さらにカスタマイズが必要な場合 (プラットフォーム固有のインストーラーを作成する場合など)、ネイティブを手動で抽出し、 java.library.path
経由でロードすることができます。その他のオプションについては、Configuration クラスを参照してください。
LWJGL 3 のビルドと実行には Java 8 以降が必要で、現在次のプラットフォーム/アーキテクチャをサポートしています。
コード例:
LWJGL 2 コードを LWJGL 3 に移行する場合は、移行ガイドを参照してください。
LWJGL ユーザーが直面する最も一般的な問題は、次の方法で簡単に解決できます。
LWJGLX/debug は、これらの問題の多くを自動的に検出する Java エージェントです。また、LWJGL に問題を報告するときに役立つトレース ログを生成することもできます。
助けを求めるとき、または LWJGL のバグが疑われるとき、問題を再現する MVCE (Minimal、Complete、および Verifiable example) を準備すると、迅速で有用な応答が得られる可能性が高くなります。
図書館 | 説明 |
---|---|
EGL | OpenGL ES や OpenVG などの Khronos レンダリング API と、基礎となるネイティブ プラットフォーム ウィンドウ システムの間のインターフェイス。 |
KTX (クロノス テクスチャ) | OpenGL®、Vulkan®、その他の GPU API 用のテクスチャ用の軽量コンテナです。 |
OpenCL | パーソナル コンピュータ、サーバー、モバイル デバイス、および組み込みプラットフォームに搭載されているさまざまなプロセッサのクロスプラットフォーム並列プログラミングのためのオープンでロイヤリティフリーの標準。 |
OpenGL | 業界で最も広く採用されている 2D および 3D グラフィックス API で、数千ものアプリケーションをさまざまなコンピュータ プラットフォームに提供します。 |
OpenGL ES | コンソール、電話、家電製品、車両などの組み込みシステム上のフル機能の 2D および 3D グラフィックスのためのロイヤリティフリーのクロスプラットフォーム API。 |
OpenXR | 拡張現実 (AR) および仮想現実 (VR) (総称して XR と呼ばれます) のプラットフォームとデバイスへの高性能アクセスを提供するロイヤリティフリーのオープン スタンダード。 |
バルカン | PC やコンソールから携帯電話や組み込みプラットフォームまで、さまざまなデバイスで使用される最新の GPU への高効率のクロスプラットフォーム アクセスを提供する新世代のグラフィックスおよびコンピューティング API。 |
図書館 | 説明 |
---|---|
GLFW | 複数のウィンドウを作成し、ユーザー入力 (キーボード、マウス、ゲーム周辺機器) を処理し、コンテキストを管理します。マルチモニターのサポート、クリップボードへのアクセス、ファイルのドラッグアンドドロップなどの機能も備えています。 |
ジョート | AWT ネイティブ インターフェイス。 |
拡張されたネイティブ ファイル ダイアログ | ネイティブのファイルを開く、フォルダーの選択、およびファイルの保存ダイアログを移植可能に呼び出す小さな C ライブラリ。 |
タイニーFD | ネイティブダイアログライブラリ。 |
図書館 | 説明 |
---|---|
FMOD | あらゆるゲームにサウンドと音楽を追加するためのエンドツーエンドのソリューション。 |
OpenAL | ゲーム アプリケーションや他の多くの種類のオーディオ アプリケーションでの使用に適したクロスプラットフォーム 3D オーディオ API。 |
OpenAL ソフト | LGPL ライセンスのクロスプラットフォームの OpenAL 3D オーディオ API のソフトウェア実装。 |
オーパス | 完全にオープンでロイヤリティフリーの、非常に汎用性の高いオーディオ コーデックです。 |
図書館 | 説明 |
---|---|
アシンプ | さまざまなよく知られた 3D モデル形式を均一な方法でインポートするためのポータブルなオープンソース ライブラリ。 |
bgfx | クロスプラットフォーム、グラフィック API に依存しない、「Bring Your Own Engine/Framework」スタイルのレンダリング ライブラリで、寛容な BSD-2 条項のオープン ソース ライセンスに基づいてライセンスされています。 |
フリータイプ | フォントをレンダリングするための無料で利用できるソフトウェア ライブラリ。 |
ハーフバズ | プログラムが一連の Unicode 入力を、あらゆる書記体系および言語向けに適切にフォーマットおよび配置されたグリフ出力に変換できるようにするテキスト整形ライブラリ。 |
メショップティマイザー | メッシュをより小さくし、レンダリングを高速化するメッシュ最適化ライブラリ。 |
msdfgen | マルチチャネル符号付き距離フィールド ジェネレーター。 |
ナノSVG | シンプルで愚かな SVG パーサー。 |
ナノVG | OpenGL 用の小さなアンチエイリアス付きベクター グラフィックス レンダリング ライブラリ。 |
ニュークリア | ANSI C で記述され、パブリック ドメインでライセンスされている最小状態即時モードのグラフィカル ユーザー インターフェイス ツールキット。 |
パーオクタスフィア | 球、丸いボックス、カプセルの三角形メッシュを生成します。 |
パーシェイプ | パラメトリック サーフェスやその他の単純な形状を生成します。 |
par_streamlines | 幅の広い線や曲線を三角形化します。 |
シェイドク | シェーダーコンパイル用のライブラリのコレクション。 |
SPIRV-クロス | SPIR-V でリフレクションを実行し、SPIR-V を高水準言語に逆アセンブルするためのライブラリ。 |
小さな OpenEXR | OpenEXR(.exr) イメージをロードおよび保存するための、単一のヘッダーのみの小さなライブラリ。 |
トゥートル (AMD) | 既存のメッシュ前処理技術を改善する 3D 三角形メッシュ最適化ライブラリ。 |
Vulkan メモリ アロケータ | 統合が簡単な Vulkan メモリ割り当てライブラリ。 |
ヨガ | Flexbox を実装するオープンソースのクロスプラットフォーム レイアウト ライブラリ。 |
図書館 | 説明 |
---|---|
LibOVR | Oculus SDKのAPI。 |
OpenVR | アプリケーションがターゲットとするハードウェアに関する特定の知識を必要とせずに、複数のベンダーの VR ハードウェアにアクセスできるようにする API とランタイム。 |
図書館 | 説明 |
---|---|
stb_easy_font | 印刷フレーム レートなどに使用する、簡単に導入できるビットマップ フォント。 |
stb_image | ファイル/メモリからの画像のロード/デコード: JPG、PNG、TGA、BMP、PSD、GIF、HDR、PIC |
stb_image_resize | 高画質で画像のサイズを大きく/小さく変更します。 |
stb_image_write | ディスクへのイメージ書き込み: PNG、TGA、BMP |
stb_パーリン | Perlin ノイズ (3D 入力、1D 出力) を修正しました。 |
stb_rect_pack | まともな品質のシンプルな 2D 長方形パッカー。 |
stb_truetype | TrueType フォントの文字を解析、デコード、ラスタライズします。 |
stb_vorbis | ogg vorbis ファイルをファイル/メモリから float/16 ビット符号付き出力にデコードします。 |
図書館 | 説明 |
---|---|
CUDA | GPU での一般的なコンピューティングのために NVIDIA によって開発された並列コンピューティング プラットフォームおよびプログラミング モデル。 |
hwloc | NUMA メモリ ノード、ソケット、共有キャッシュ、コア、同時マルチスレッドを含む、最新のアーキテクチャの階層トポロジの移植可能な抽象化。 |
ジェマロック | 断片化の回避とスケーラブルな同時実行性のサポートを重視した汎用の malloc 実装。 |
リブフィ | さまざまな呼び出し規約に対する移植可能な高レベルのプログラミング インターフェイス。 |
リブディバイド | 高価な整数除算を比較的安価な乗算とビットシフトに置き換えるライブラリ。 |
LLVM | モジュール式で再利用可能なコンパイラおよびツールチェーン テクノロジのコレクション。 |
LMDB | 非常に高速でメモリ効率の高いデータベース。メモリ マップト ファイルを使用すると、標準のディスク ベース データベースの永続性を維持しながら、純粋なメモリ内データベースの読み取りパフォーマンスが得られます。 |
LZ4 | 圧縮と解凍の速度に重点を置いた可逆データ圧縮アルゴリズム。 |
ニャーハッシュ | 非常に高速な非暗号化ハッシュ。 |
ODBC | アプリケーションがさまざまなデータベース管理システム (DBMS) からのデータにアクセスできるようにする AC プログラミング言語インターフェイス。 |
遠隔操作 | Web ブラウザで実行されるビューアを備えた単一の C ファイルでホストされるリアルタイム CPU/GPU プロファイラ。 |
rpmalloc | C で実装されたパブリック ドメインのクロスプラットフォーム ロックフリー スレッド キャッシング 16 バイト アラインメント メモリ アロケーター。 |
xxハッシュ | RAM 速度制限で実行される、非常に高速なハッシュ アルゴリズム。 |
Z標準 (zstd) | 高速可逆圧縮アルゴリズム。zlib レベルでのリアルタイム圧縮シナリオとより優れた圧縮率をターゲットとしています。 |
バインディングの使用には、対応するライセンスの条件が適用されます。
LWJGL は、私たちの集団に貢献し寄付してくれるすべての人々のおかげで存在します。