OpenGL ES (OpenGL for Embedded Systems)とは
OpenGL ESは、主に
携帯電話や
組み込みシステムで利用される
3次元[[コンピュータグラフィックス]]APIです。デスクトップPC向けの
OpenGLのサブセットとして開発され、グラフィックスハードウェア(GPU)の性能を最大限に引き出す高速なグラフィックス描画を可能にします。オープン仕様かつロイヤリティフリーであるため、多くのプラットフォームで採用されています。
クロスプラットフォーム: 様々なデバイスやOSで動作します。
GPU活用: GPUの機能を最大限に活用し、高速な描画を実現します。
オープン仕様: 誰でも実装可能で、特定のベンダーに依存しません。
ロイヤリティフリー: ライセンス料を気にせず利用できます。
iOS、Android、Symbian OSなどのモバイルOS
PlayStation 3、Nintendo 3DSなどのゲーム機
バージョンと機能
OpenGL ESは、以下のバージョンが存在し、それぞれ機能が異なります。
OpenGL ES 1.x系 (1.0, 1.1)
固定機能シェーダー: グラフィックスパイプライン処理が固定されており、プログラマブルシェーダーは利用できません。
シェーディング: フラット
シェーディングや
グーロー[[シェーディング]]など、カスタマイズできない頂点単位の陰影計算のみをサポートします。
OpenGL ES 1.0は
OpenGL 1.3のサブセット、1.1は
OpenGL 1.5のサブセットとして登場しました。1.1では、バッファオブジェクト、自動ミップマップ生成、拡張テクスチャ処理、頂点スキニング機能などの機能が追加されています。
プログラマブルシェーダー: シェーディング言語GLSL ESに対応し、シェーダーをプログラム可能です。
固定機能シェーダーの削除: 1.x系にあった固定機能
シェーダーは削除されました。
OpenGL ES 2.0は、
OpenGL 2.0のサブセットとして登場しました。プログラマブル
シェーダーの導入により、より柔軟なグラフィックス処理が可能になりました。
後方互換性: 2.0との後方互換性を持ちます。
高度な機能: マルチレンダーターゲット機能、マルチサンプルアンチエイリアス(MSAA)などのDirectX 10世代の機能をサポートします。
OpenGL ES 3.0は、
OpenGL 3.2の一部の機能を導入し、より高度なグラフィックス表現が可能になりました。
コンピュートシェーダー: OpenGL 4.3で採用されたコンピュートシェーダーを導入します。
OpenGL ES 3.1では、コンピュートシェーダーによる汎用計算処理が可能となりました。
ジオメトリシェーダー、テッセレーションシェーダー:
OpenGL 4シリーズ同等の機能が追加されました。
ASTC: テクスチャ圧縮技術であるASTCのサポートが標準化されました。
OpenGL ES 3.2は、OpenGL 4シリーズ相当の機能が追加され、より高品質なグラフィックス表現が可能になりました。
ANGLE (Almost Native Graphics Layer Engine)
ANGLEは、Googleが開発したOpenGL ES互換レイヤーを提供するオープンソースライブラリです。Direct3D、デスクトップOpenGL、Vulkanなどのバックエンド実装を利用することで、デバイスドライバーの不具合を回避したり、様々なプラットフォームへの移植を容易にしたり、パフォーマンスを向上させたりすることができます。Vulkanバックエンドでは、OpenGL ES 3.2までの実装が完了しています。
iOS/tvOSでの非推奨化
Appleは、iOS 12およびtvOS 12でOpenGL ESを非推奨APIとしました。代替としてMetalが推奨されています。MetalはOpenGL ESよりもハードウェアに近い下位レベルAPIであり、ミドルウェア開発向けです。MoltenGLライブラリを利用することで、Metal上でOpenGL ESを利用できます。
まとめ
OpenGL ESは、組み込みシステム向けの強力な3DグラフィックスAPIであり、進化を続けながら多くのプラットフォームで利用されています。バージョンアップごとに機能が追加され、より高度で美しいグラフィックス表現が可能になっています。
関連技術
OpenGL:
OpenGL ESのベースとなるデスクトップ向けのグラフィックスAPI
GLSL: OpenGL ESのシェーディング言語
WebGL: ブラウザ上で
OpenGL ESを利用するためのAPI
Direct3D: Microsoftが開発したグラフィックスAPI
Metal:
Appleが開発したグラフィックスAPI
*
Vulkan: 次世代のグラフィックスAPI