日別アーカイブ: 2010年3月13日

OpenGL 4.0 / OpenGL 3.3

新しい OpenGL 仕様が発表されました。

OpenGL Overview

OpenGL 4.0 は一言で言えば Direct3D 11 (DirectX11)。

シェーダーステージも増えテセレータが追加されています。
OpenGL 3.2 がほぼ Direct3D 10 相当でしたが、これで Direct3D との機能差が
一気に無くなりました。

Direct3D11/DirectX11  OpenGL 4.0
-----------------------------------------------------------------------------
Vertex Shader         Vertex Shader                  (GL_VERTEX_SHADER)
Hull Shader           Tessellation Control Shader    (GL_TESS_CONTROL_SHADER)
Domain Shader         Tessellation Evaluation Shader (GL_TESS_EVALUATION_SHADER)
Geometry Shader       Geometry Shader                (GL_GEOMETRY_SHADER)
Pixel Shader          Fragment Shader                (GL_FRAGMENT_SHADER)
Compute Shader        OpenCL

整数演算や倍精度浮動小数演算(double)も D3D11 同様に追加されています。

OpenGL 3.3 は OpenGL 3.2 の拡張版です。まだ機能差を詳しく確認していませんが
Direct3D 10 に対する 10.1 の位置づけでしょうか。

OpenGL 4.0/3.3 共に OpenGL のバージョンとシェーダー言語のバージョン番号が
統一されました。

OpenGL 2.0   GLSL 1.1    vsh, fsh
OpenGL 2.1   GLSL 1.2    vsh, fsh
OpenGL 3.0   GLSL 1.3    vsh, fsh
OpenGL 3.1   GLSL 1.4    vsh, fsh
OpenGL 3.2   GLSL 1.5    vsh, fsh, gsh
OpenGL 3.3   GLSL 3.3    vsh, fsh, gsh
OpenGL 4.0   GLSL 4.0    vsh, fsh, gsh, tcsh, tesh

tcsh= Tessellation Control Shader
tesh= Tessellation Evaluation Shader

使う側から見れば D3D11 のスレッド対応や豊富な圧縮テクスチャが使えることは
非常に大きな優位点です。

しかしながら OpenGL 4.0 でもテセレーションなどほぼ同等のことができるように
なっています。モバイル向け OpenGL ES と互換性を取りやすい点を考えると OpenGL は
かなり魅力的な環境になったといえるでしょう。

関連エントリ
OpenGL GLSL のバージョン