WebGLのプラットフォーム概要

WebGLとは

WebGLはインタラクティブな3Dグラフィックスを生成することを可能にする為の標準仕様です。WebGLに対応するWebブラウザで特別なブラウザのプラグインなしに動作します。

WebGLは非営利団体のKhronos Groupで管理されています。

WebGL は Firefox 4 および Google Chrome 9、Internet Explorer 11 からサポートされています。

OpenGLとの差異

WebGL は OpenGL ES 2.0 から派生しています。OpenGL ES 2.0は主にデスクトップ環境を対象としたAPIであるOpenGLのモバイル向けのサブセットです。WebGLはブラウザで実行するように設計され、OpenGL ES 2.0の仕様に基いていてモバイル機器へのポータビリティを最大化する設計を受け継いでいます。

OpenGL ES 2.0 と OpenGL のAPI には次のような違いがあります。

  • 2の累乗でない(Non-Power of Two; NPOT)テクスチャーは限定的になります。デスクトップ用 OpenGL 2.0 以降では NPOT テクスチャーがサポートされていますが、OpenGL ES 2.0やWebGLでは限定的にしかサポートされていません。
  • 倍精度浮動小数点数のサポートはありません。OpenGL ES 2.0は頂点アトリビュートにおいてもテクスチャーデータにおいてもGL_DOUBLE型はなく、 Float64Array は WebGLにおいて意味がありません。
  • WebGL 及び OpenGL ES 2.0 では 3D テクスチャーのサポートはありません。
  • 3Dテクスチャーのサポートはありません(3Dテクスチャは 2Dテクスチャでエミュレート可能です)。
  • texture2DLodのように後ろにLodのついた関数は頂点シェーダーでしか使えません。

OpenGL 2.0 はグラフィックドライバのサポートが必要であるのに対して WebGL ではOpenGLドライバに依存しません。Google の公開した “ANGLE(Almost Native Graphics Layer Engine)” は DirectX と OpenGL の差異を吸収するライブラリで、OpenGL GLSLまたはDirect3D HLSLのいずれかにWebGLのコールを翻訳して実行する事で、DirectXのみに対応する環境でも動作させる事ができるようになっています。

WebGL API

WebGL の API はOpenGL ES 2.0 の抽象度の低い薄いラッパーでJavascript 言語から利用します。HTML5のcanvas要素を使用し、ドキュメントオブジェクトモデルインタフェースを使用してアクセスします。従って自動メモリ管理はJavaScript言語の一部として提供されます。

関連文書

参考