ユーザ用ツール

サイト用ツール


opengl:opengllist

文書の過去の版を表示しています。


OpenGL ES API

OpenGL ES 2.0

OpenGL 2.1 の Mobile 向け API。

Direct3D 9 世代の GPU をターゲットにしていますが、 固定機能パイプ欄を廃して描画には Shader が必須となっています。 そのため OpenGL ES 1.1 や OpenGL 1.x 系とは全く互換性がありません。

Desktop API で固定機能互換性を切り捨てたのは OpenGL 3.x や Direct3D 10 なので、 Mobile では一足早く行われたことになります。

固定機能を削除したため、API は描画に必要な最小限で大変シンプルにまとまっています。 必要な機能があればシェーダー実装すればよいわけで、重複した機能がなく、不要なものがありません。 歴代の 3D API の最も理解しやすいといえるかもしれません。

それ故移植性も高く、JavaScript から使える WebGL など、様々なプラットフォームで利用されています。 おそらく最も多くのプラットフォームで利用できる 3D API であるといえるでしょう。

入門にもおすすめ。

Direct3D 9 世代には ShaderModel 2.0 と 3.0 の 2種類あります。 OpenGL ES 2.0 対応 GPU は ShaderModel 3.0 から若干機能を削ったものに相当します。

  • Direct3D 8 (ShaderModel 1.0)
    • Pixel Shader は 9~12bit の固定小数点演算のみ。(lowp 未満)
    • Pixel Shader は Color Combiner を拡張しただけなので、プログラムサイズは 8~16 step + Texture 4~6 step 固定。
    • 使用できる Texture 枚数と Fetch 制限が同一。同じテクスチャを複数回読めない。
    • プログラム言語は基本的に Shader Assembler
  • Direct3D 9 (ShaderModel 2.0)
    • Pixel Shader は 24~32bit 浮動小数点演算をサポート
    • Pixel Shader の Program サイズは、Color 64 step + Texture 32 step の合計 96 step のみ
    • Texture Fetch 制限が分離 (同じテクスチャを複数読める) ただし上限あり
    • Fog など固定機能を併用する
    • 汎用補間 Register (varying) はなく Texcoord0~ を流用する。
  • Direct3D 9 (ShaderModel 3.0)
    • Pixel Shader は 32bit 浮動小数点演算をサポート
    • Program サイズは 512 step 以上
    • Pixel Shader の Color 命令と Texture 命令が統合された
    • Texture Fetch 制限がなくなった。同じテクスチャを何度でも読める。
    • 汎用補間 Register (varying) により用途はプログラマが決定する。
    • 動的分岐に対応
    • Shader Program は HLSL (高級言語) を使うことが当たり前となった
  • OpenGL ES 2.0 (ShaderModel 3.0-)
    • PixelShader は 16bit 浮動小数点演算以上をサポート
    • Shader Constant (Uniform) 数は Direct3D 9 3.0 の半分
    • Texture Fetch 制限なし
    • 24bit depth buffer はオプション
    • プログラム言語は GLSL (高級言語) のみサポート

ただし Mobile 向け GPU の多くにとって OpenGL ES 2.0 の最低要件は低すぎだったようで、 Extension により大きく機能拡張されているものがほとんどです。

opengl/opengllist.1397647431.txt.gz · 最終更新: 2014/04/16 20:23 by oga

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki