OpenGLとは
プログラムからグラフィックスハードウェアを制御するために使用するアプリケーションプログラムインタフェース (API) のひとつ。 クロノスグループ が策定をしており、現在の最新バージョンは4.6である。
Windows, Mac OS, Linux, BSD等の様々なOSの上で利用可能。個人でも無料のソフトウェア群のみでGPUの能力を最大限に利用できる3Dプログラミング環境を整備できる。家庭用・業務用問わず広く普及している。
OpenGL以外には、後継のVulkan、AppleのMetal、MicroSoftのDirect Xなどが存在する。
OpenGLファミリー
OpenGLには派生形として以下の3つが存在する。
用途 | |
---|---|
![]() |
組込系や携帯デバイス |
![]() |
航空電子機器、工業、軍事、医療などセーフティクリティカルな現場 |
![]() |
Webブラウザ、HTML5のcanvas要素を通じて、JacaScriptで利用できるグラフィックスAPIのWeb標準。 |
3.X以降のOpenGL
OpenGLにおける特異点が3.0。
2008年に公開されたOpenGL 3.0では、肥大化したAPIを整理するため、**2.X以前を切り捨てる大幅なアップデートが行われた。**その後、徐々に後方互換をなくし、3.1からは、Vertex ShaderとFragment Shaderが必須となった。3.2でGeometry Shaderのサポート。4.X系からは、Tesselation ShaderやCompute Shader、Transform FeedBackなどが利用可能になり、よりプログラマブルかつ柔軟に進化している。
2.Xから3.X以降への大きな変化。
- 固定機能パイプライン、イミディエイトモードを廃止に
- 多くのOpenGL関数が非推奨に
- Vertex ShaderとFragment Shaderが必須に
依然として残る問題。解決策としてのVulkan
OpenGLの次世代APIとして、VulkanがSIGGRAPH 2014にて発表された。
これは、3.X系で後方互換を切ったが、それでも残る1.Xや2.X時代の設計を刷新しようというねらいがある。
OpenGLよりもローレベルな制御が可能で、OpenGLでは不可能だったマルチスレッドに対応している。
ちなみにopenFrameworksにはVulkanのフォークがある。
https://github.com/openframeworks-vk/openFrameworks
まとめ
- OpenGLは、WIndows、Mac、Linux上で動作し、多くの場面で活躍している。
- OpenGLは3.0で後方互換を切り捨てた設計に変化した。
- しかし、以前残るレガシーな設計を刷新すべく次世代APiであるVulkanが発表された。
- 現在もバージョンアップを重ねより便利なAPIに進化している。