音ゲーの出来ない雑魚のブログ

LWJGLとかのことをいうブログ

「じっくりGLとJava」 2 そもそもLWJGLとは?Javaで?

前の記事を再利用するという顛末ですが…

LWJGLとは

LWJGLとは…

LWJGL (Lightweight Java Game Library) とはコンピューターゲーム向けのJavaプラットフォームのオープンソースライブラリである。

 

OpenGL,OpenAL,OpenCLJava から使えるようにし、ゲームパッドやハンドルやジョイスティックなどのコントローラをOSに依存しない形でアクセスできるようにする。

 (by Wikipedia)

 

という感じです。「OpenGL」の色々を取り込んだライブラリーでしたね。それが、ゲームに特化しているというのが特徴です。

 

公式サイトは

です。

Javaのプラットフォームは何が違うのか?

 そもそも、JavaC(C++は何が違うのでしょうか…というより、なぜJavaなのでしょうか?

 

 JavaはCを元にした言語で、昔から「遅い」と言われてきました。その原因が↓↓

 

  •  Cは機械の読み取りやすい機械語に変換するのに対して、Javaバイトコードという中間的な物に変え(ここまでが遅い)、それを機械が読み取るため
  • 中でも、立ち上がりの時や、GC*1による影響が大きい。

 

しかし、最近では、Javaも改善されてきて…

 

 

というようになって、CやC++並の実行速度になることが出来ました。また、Javaの元々の特徴が、

 *オブジェクト指向型言語

 *マルチプラットフォーム

 *インターネットにも対応

という感じなので、色々な場所(パソコン、スマホ、Web)に対応することが出来ます。

また、OpenGLも”OpenGL ES”という拡張版を使えばスマホなどの機械でも使えるようになるので、Javaに合っているといえます。

LWJGLの入れた他のライブラリー

また、LWJGLは他に

  • OpenGL ES                 :OpenGLを埋込みの(携帯とか)機械でも使えるようにしたもの
  • OpenAL                       :マルチプラットフォーム(マルチ化)のオーディオ(音楽)系API
  • OpenCL                       :マルチ化の並列コンピューティング(計算など)系API
  • GLFW                          :ウィンドウや、入力を管理するOpenGLの拡張ライブラリー
  • EGL                             :OpenGLをそれぞれのプラットフォームとつなげるためのAPI
  • Objective-C                 :C言語のオブジェクト型上位互換言語、iOSとかでも使えるようにする
  • LibOVR (beta版)          :ゴーグル型ディスプレイ"Oculus Rift"(by Oculus VR)のコード用API
  • Vulkan (そのうち実装) :OpenGLの次世代型API

といった様々なAPIが入っています。特に最後の2つは、まだ開発段階ですが、最新技術を取り入れようとしていることがわかると思います。

 

このように、LWJGLはかなり開発が盛んなライブラリーなのです。ただ、LWJGLの基本が、

OpenGLなどへの薄いラッパー(カバー)」

であるので、もっと厚くカバーしているものを使いたいのなら、Engine系や、Unityなどのゲーム作成ソフトを使ってみるのがいいでしょう。

 

次回は、、、、、わかりませんが、OpenGLでの色々をどんどん書いていきたいです。

                                                                                          

*1:ガーベージ・コレクション。プログラム上で要らなくなったオブジェクトをメモリから消すこと。Full GCというものに関しては、長くの間システムが止まってしまうので、動作が遅くなる