OpenGL ESは、OpenGLと同様、保守・定義されているライセンスフリーのクロスプラットフォーム3DグラフィックスAPIですが、OpenGLとは異なり、主に組み込み環境を対象としています。
近年、Web上のマルチメディア技術はますます複雑化・多様化しており、3Dグラフィックスのハードウェアによる高速化が徐々に必要とされているため、OpenGL ES 2.0を発展させた 登場し、Web上で直接3D表示できるようになりました。
OpenGL ESは、一般的に効率が低く、サポートされている機能が少ない環境を対象としているため、OpenGL ESの技術的進歩はOpenGLよりも遅く、制限も多くなっています。
このメリットは、レンダリング方式がかなり柔軟になり、プログラマが自分の必要に応じてこの2つのブロックの計算方法を調整することで、必要な機能を実現できることですが、相対的なデメリットは、最もシンプルなプログラムであっても、独自のシェーダープログラムを書く必要があり、何となく敷居が高くなってしまうことです。
もうひとつ、従来のOpenGLと大きく異なる開発部分には、次のようなものがあります:
OpenGL ES 2.0では、OpenGLの行列スタックがないため、開発者は各オブジェクトの射影行列と変換行列を自分で計算し、シェーダに渡して計算する必要があります。プログラムのGPU側には行列計算機能がありますが、CPU側では行列計算の基本的なアルゴリズムを自分で実装する必要があります。その
プリミティブ型GL_QUADS / GL_POLYGONSが削除されました。
頂点に関するすべての情報は抽象頂点アトリビュートで扱われるようになり、頂点シェーダで定義して計算する必要があります。
ライティングとマテリアルも抽象化され、一様な変数としてシェーダに渡され、独自に計算されます。
これらは大きな違いの一部であり、他にも異なる部分があるので、ここでは挙げません。実際、OpenGL ES 2.0はOpenGL 2.0よりもOpenGL 3.xのコアプロファイルに近いので、基本的にはOpenGL ES 2.0をOpenGL 3.0のコンセプトで書く方が適しています。ただ、OpenGL ES 2.0はOpenGL 3.xよりも少し性能が劣ります。