差分

ナビゲーションに移動 検索に移動

OpenGL ES

7,974 バイト追加, 2016年3月14日 (月) 01:42
ページの作成:「'''OpenGL ES'''(語源:OpenGL for Embedded Systems)とは、主に携帯電話などの組み込みシステムで使用されているコンピュータ...」
'''OpenGL ES'''(語源:OpenGL for Embedded Systems)とは、主に[[携帯電話]]などの[[組み込みシステム]]で使用されている[[コンピューターグラフィックス]]用の[[API]]である。

== 概要 ==
OpenGL ESは大雑把にいえば無印[[OpenGL]]から機能を削ったものである。
OpenGL ESはオープン仕様かつロイヤリティフリーである。

== 互換性 ==
OpenGL ESは無印OpenGL同様に「拡張」が許されているため互換性は絶望的な状況にある。無印OpenGLのように[[NVIDIA]]と[[AMD]]と[[Intel]]の実質三社しか存在しない環境とは異なり、OpenGL ES製品は新興国の新興メーカーも次々と新製品を出しては消えており、その全てが挙動が違うという冗談顔だけにしてほしい状況となっている。

このため[[Android]]向けの[[ゲーム]]などの[[アプ]]リでは、世界で一番売れている[[サムスン電子]]のGalaxyシリーズが搭載する[[Snapdragonシリーズ]]に内蔵される[[GPU]]である[[Adrenoシリーズ]]しかサポートしないという製品も多い。[[Antutu]]や[[Passmark]]などの[[ベンチマーク]]でSnapdragonシリーズを超える数値を叩き出した[[SoC]]は過去に幾度となく存在したが、OpenGL ESがクソ仕様なせいで実際には[[ゲーム]]で遊べないという苦情が多発し、性能を抜きにしてSnapdragonシリーズを採用するという風潮が醸し出され、最終的に[[Snapdragon 810]]の爆死に繋がった。

== バージョン ==


OpenGL ES 2.0は、[[プログラマブルシェーダー]]に対応した仕様であり、シェーディング言語[[GLSL]] ESに対応する一方で固定機能シェーダーは削除されている。OpenGL ES 2.0は1.x系との完全な後方[[互換性]]はない。陰影計算・質感表現をプログラマブルシェーダーで記述することによって、GPUによる支援が受けられるようになる。

=== OpenGL ES 1.0 ===
OpenGL ES 1.x系には1.0と1.1の2つが存在する。1.x系は処理が固定された[[シェーダー]](固定機能シェーダー)のみに対応しており、プログラム可能なシェーディング機能([[プログラマブルシェーダー]])には対応していない。このため、[フラットシェーディング]]あるいは[[グーローシェーディング]]といったカスタマイズ不可能な頂点単位の[[シェーディング]](陰影計算)や質感表現のみがサポートされている。

OpenGL ES 1.0はOpenGL 1.3のサブセットとして2003年に登場した。[[Symbian OS]] と [[Android]] プラットフォームの公式3DグラフィックスAPIとして採用されている。また、[[ソニー・コンピュータエンタテインメント]]によるOpenGL ES 1.0の拡張版「PSGL」が[[プレイステーション3]]の公式グラフィックスAPIの1つとしてサポートされている<ref>[http://game.watch.impress.co.jp/docs/20060329/3dps3.htm 西川善司の3DゲームファンのためのPS3アーキテクチャ講座]</ref>。

=== OpenGL ES 1.1 ===
OpenGL ES 1.1はOpenGL 1.5のサブセットとして2004年8月9日に発表された。[[Android]] 1.6、[[iPhone]]、[[iPod touch]]、[[iPad]]等で広くサポートされている。1.0世代の[[ハードウェア]]でも[[デバイスドライバー]]のアップデートで1.1に対応可能とされる。

以下の機能がOpenGL ES 1.0に追加になっている。
* バッファオブジェクト
* 自動ミップマップ生成
* 拡張テクスチャ処理
* 頂点スキニング機能
* ユーザー定義クリッププレーン
* 拡張ポイントスプライト、ポイントスプライト配列
* 静的・動的状態クエリー
* テクスチャ描画
* 新しいコア追加、プロファイル拡張

=== OpenGL ES 2.0 ===
OpenGL ES 2.0はOpenGL 2.0のサブセットとして2007年に公開された。
[[iPhone 3GS]]以降、[[iPod Touch]]の第3世代以降、[[iPad]]、[[Android]] 2.2以降などでサポートされている。
2016年現在のiPhone 6sやAndroid 6.0も基本はOpenGL ES 2.0である。

[[シェーディング言語]]は時代遅れ感が満載のGLSL ES 1.0をサポートする。
プログラマブルシェーダーステージは[[バーテックスシェーダー]]([[頂点シェーダー]])と[[フラグメントシェーダー]]([[ピクセルシェーダー]])の2つをサポートする。頂点単位やピクセル単位の陰影計算・質感表現の制御が[[GPU]]により支援される。[[シェーダー]]は書き込みのみで読み出しはできないクソ仕様である。

なお、本家OpenGLはバージョン4.1でOpenGL ES 2.0プロファイルを扱うことができるようになっている。

=== OpenGL ES 3.0 ===
OpenGL ES 3.0は2012年に発表された。2.0との[[後方互換性]]がある。

[[DirectX]] 10 ([[Direct3D]] 10) やOpenGL 3.2の[[ジオメトリシェーダー]]はサポートされないが、マルチレンダーターゲット機能や[[マルチサンプルアンチエイリアス]]([[MSAA]])を標準サポートするようになり、また[[Uniform Block]]や[[Transform Feedback]]などの[[DirectX 10]]世代([[統合型シェーダーアーキテクチャ]]世代)の機能を多数サポートする。なおサポートするだけで実際に使い物になるかは別問題である。

[[シェーディング言語]]はこれ考えた奴は実際に使うこと想定しているのか疑問なGLSL ES 3.0をサポートする。

なお、本家OpenGLはバージョン4.3でOpenGL ES 3.0プロファイルを扱うことができるようになっている。

=== OpenGL ES 3.1 ===
OpenGL ES 3.1は2014年3月17日に発表された。

[[ジオメトリシェーダー]]および[[DirectX 11]] ([[Direct3D 11]]) や[[OpenGL 4.0]]の[[テッセレーションシェーダー]]はサポートされないが、本家OpenGL 4.3で採用された[[コンピュートシェーダー]]などを導入している<ref>[http://www.4gamer.net/games/107/G010729/20140318012/ Khronos,「OpenGL ES 3.1」を発表。OpenGL 4.xとの親和性を高める改良を施す - 4Gamer.net]</ref>。3.0世代のハードウェアでもドライバーレベルのアップデートで3.1に対応可能とされる<ref>[https://www.khronos.org/assets/uploads/developers/library/2014-gdc/Khronos-OpenGL-ES-GDC-Mar14.pdf What’s New in OpenGL ES]</ref>。

[[シェーディング言語]]はこれでコンピュートシェーダーを使えとか正気の沙汰とは思えないGLSL ES 3.1をサポートする。

なお、本家OpenGLはバージョン4.5でOpenGL ES 3.1プロファイルを扱うことができるようになっている。

=== OpenGL ES 3.2 ===
OpenGL ES 3.2は2015年8月10日に発表された。

[[Google Android Extension Pack]] ([[AEP]]) にて拡張として定義されていた機能<ref>[http://www.4gamer.net/games/107/G010729/20140827118/ スマホでPS4世代のグラフィックスを実現? OpenGL ES 3.1の拡張機能「Google AEP」や次世代OpenGLの話をKhronos Group代表に聞いてみた - 4Gamer.net]</ref>、すなわち[[ジオメトリシェーダー]]および[[テッセレーションシェーダー]]、そしてテ[[クスチャ圧縮]]技術である[[Adaptive Scalable Texture Compression]] ([[ASTC]])のサポートが標準化されたほか、本家OpenGL 4シリーズ同等の機能が多数追加される<ref>[https://www.khronos.org/news/press/khronos-expands-scope-of-3d-open-standard-ecosystem Khronos Expands Scope of 3D Open Standard Ecosystem - Khronos Group Press Release]</ref>。

シェーディング言語はGLSL ES 3.2をサポートする。

== 関連項目 ==
* [[OpenGL]]

== 参考文献 ==
{{reflist}}

{{stub}}
匿名利用者

案内メニュー