Edited at

Modern OpenGLとは

More than 1 year has passed since last update.


OpenGLとは

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3130343233342f34623466613737662d663666332d346431382d363266622d3135303062383766613561362e706e67.png

 プログラムからグラフィックスハードウェアを制御するために使用するアプリケーションプログラムインタフェース (API) のひとつ。 クロノスグループ が策定をしており、現在の最新バージョンは4.6である。

 

 Windows, Mac OS, Linux, BSD等の様々なOSの上で利用可能。個人でも無料のソフトウェア群のみでGPUの能力を最大限に利用できる3Dプログラミング環境を整備できる。家庭用・業務用問わず広く普及している。

OpenGL以外には、後継のVulkan、AppleのMetal、MicroSoftのDirect Xなどが存在する。


OpenGLファミリー

 OpenGLには派生形として以下の3つが存在する。

用途

download.png
組込系や携帯デバイス

OpenGL_SC_logo.svg.png
航空電子機器、工業、軍事、医療などセーフティクリティカルな現場

1200px-WebGL_Logo.svg.png
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

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3130343233342f34383762323836642d346166642d666537352d353666652d6638626638346637616331322e706e67.png

 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に進化している。