Mobile 向け 3D API は OpenGL ES 2.0 で完全に統一されました。
今では WebGL や NaCl など Desktop PC でも使う機会が増えています。
もともと機能の確認やポータビリティのチェックのために情報を集めていましたが、
これらの OpenGL ES 2.0 実行環境をまとめてみました。
WGL_EXT_create_context_es2_profile
詳しくはこちら
・Desktop 向け OpenGL ES 2.0 実行環境
以下抜粋
Adreno SDK GPU Emu EGL+ES2 ATITC/ETC1 PVRVFrame GPU Emu EGL+ES2 PVRTC/ETC1 Mali OpenGL ES Emulator GPU Emu EGL+ES2 ETC1 Tegra OpenGL ES 2.0 Emulator GPU Emu EGL+ES2 S3TC(DXT) ANGLE Project Application EGL+ES2 S3TC(DXT) RADEON OpenGL ES 2.0 API Application EGL+ES2 OpenGL 4.1 ES2 Compatibility Application ES2
● GPU Emulation 系
開発用なので目的が異なりますが、比較のために同じリストに入れています。
基本的には libEGL, libGLESv2 を呼び出すだけで EGL と OpenGL ES 2.0 の
API が使えます。固有の extension を使わなければ khronos の汎用ヘッダのまま
共有可能です。
ただし Tegra だけは別で、呼び出し規約が異なるため付属のヘッダフィルを
用いる必要があります。具体的には KHR/khrplatform.h の KHRONOS_APIENTRY
が違います。
● ANGLE Project
多くの Emulator が OpenGL 2.x に変換しているのに対して、このライブラリは
DirectX (Direct3D 9) を使用します。
そのため Windows 上で OpenGL ドライバが提供されていない GPU でも動作します。
具体的には Atom Z シリーズの GMA500 (600) や、ノート PC 等でメーカー独自
のドライバ以外受け付けない場合に役に立ちそうです。
実際に VAIO Type P (Atom Z540 + GMA500, Windows 7 x86) 上できちんと
動作することを確認しました。
使い方は GPU Emulator 系と全く同じで libEGL/libGLSLv2 を呼び出すだけです。
CPU が低速なのでコンパイルに時間がかかりますが、Atom Z 系ネットブックでも
OpenGL アプリの開発ができるようになりました。
● RADEON OpenGL ES 2.0 API
Desktop 向け RADEON のドライバには EGL と OpenGL ES 2.0 API が
含まれています。
・GeForce/RADEON で OpenGL ES 2.0 を動かす
RADEON 限定ですが安定して動作します。
import lib さえ用意すれば他の実行環境とほとんど同じ使い方が可能です。
ただし gl API は GetProceAddress() ではなく eglGetProcAddress() を使います。
GL_VERSION: OpenGL ES 2.0 10428 Release GL_RENDERER: AMD Radeon HD 6750M GL_VENDOR: Advanced Micro Devices, Inc. GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 1.0.17
● OpenGL 4.1 ES2 Compatibility
OpenGL 4.1 以上で OpenGL ES 2.0 の API 呼び出しができます。
比較的新しい GPU + ドライバの組み合わせが必要ですが、今後は対応ハードが
増えていくものと思われます。
(2011/09/26 追記以下は RADEON の場合)
Context 生成時は Core Profile Context (WGL_CONTEXT_CORE_PROFILE_BIT_ARB)
ではなく Compatibility Profile Context
(WGL_CONTEXT_COMPATIBILITY_PROFILE_ARB) を指定します。
WGL_EXT_create_context_es2_profile が無ければ
WGL_CONTEXT_ES2_PROFILE_BIT_EXT は特に必要無いようです。
関数のエントリさえ準備できればあとは GLES2/gl2.h でコンパイルが通ります。
EGL は無いので WGL をそのまま使用します。
シェーダーは #version 100 が利用可能でこの場合 GLSL ES と見なします。
GLSL 内の GL_ES の定義は自分で行う必要があるようです。
(2011/09/26 追記場合)
GeForce の場合は WGL_EXT_create_context_es2_profile があるので
WGL_CONTEXT_ES2_PROFILE_BIT_EXT で Context を作り直します。
具体的な方法について詳しくは こちら を参照してください。
GL_VERSION: OpenGL ES 2.0 280.26 GL_RENDERER: GeForce GTX 460/PCI/SSE2 GL_VENDOR: NVIDIA Corporation GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 1.00
関連エントリ
・GeForce/RADEON で OpenGL ES 2.0 を動かす
・OpenGL ES 2.0 Emulator