Archives

March 2010 の記事

新しい 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 のバージョン


Android もついに OpenGL ES 2.0 対応となりました。

Download the Android NDK

嬉しいのは NDK による正式対応という点。他のプラットフォームで開発していた
C/C++ のコードを移植できます。OpenGL ES 2.0 を使ったゲームエンジンなどを
そのまま共有できるようになったわけです。

モバイル系の 3D API はほぼ OpenGL ES 2.0 へ集中していますが、アプリケーション
の記述言語はプラットフォーム毎に異なっていました。

Platform           OS            アプリ記述言語    C/C++対応  3D API
-------------------------------------------------------------------------------
iPhone/iPod touch  iPhoneOS      Objective-C/C++   C/C++      OpenGL ES 1.1/2.0
Android            Android       Java(dalvik)      NDK C/C++  OpenGL ES 1.1/2.0
Palm Pre           WebOS         JavaScript        PDK C/C++  OpenGL ES 1.1/2.0
Windows Phone 7    WindowsCE6    C#                ?          ?

Palm Pre でも同様に PDK による C/C++ と OpenGL ES 1.1/2.0 対応が発表されている
ようです。

Plug-in Development

OpenGL ES と同じように、C/C++ が共通で使える言語となっています。
Windows Phone 7 はどうなるでしょうか。


関連エントリ
OpenGL を Direct3D 互換で使う