MacOS X が 10.9 Mavericks から OpenGL 4.1 対応になりました。
特筆すべき点は Intel HD 4000 でも OpenGL 4.1 が使えることです。
Windows のドライバはまだ OpenGL 4.0 のままなので逆転が起こっています。
しかしながら Windows のドライバも、Windows 8.1 向けの
15.33.5.64.3316 (10.18.10.3316) では改善されていることがわかりました。
● Mac OS X 10.9
下記の通り 4.1 になっています。
// Mac OS X 10.9 Mavericks GL_VERSION: 4.1 INTEL-8.18.26 GL_RENDERER: Intel HD Graphics 4000 OpenGL Engine GL_VENDOR: Intel Inc. GL_SHADING_LANGUAGE_VERSION: 4.10
実際に試してみましたが、NSOpenGLView の NSOpenGLPFAOpenGLProfile には
シンボルが追加されていませんでした。
以前の記事で書いたように NSOpenGLProfileVersion3_2Core のままで構わないようです。
OpenGL 4.1 の context が作られています。
ちなみに Direct3D11 対応の RADEON でも OpenGL 4.1 までです。
// Mac OS X 10.9 Mavericks GL_VERSION: 4.1 ATI-1.14.21 GL_RENDERER: AMD Radeon HD 6750M OpenGL Engine GL_VENDOR: ATI Technologies Inc. GL_SHADING_LANGUAGE_VERSION: 4.10
Direct3D 10 世代の GPU では OpenGL 3.3 が使えるようになりました。
// Mac OS X 10.9 Mavericks GL_VERSION: 3.3 NVIDIA-8.18.27 310.40.05f01 GL_RENDERER: NVIDIA GeForce 9400 OpenGL Engine GL_VENDOR: NVIDIA Corporation GL_SHADING_LANGUAGE_VERSION: 3.30
まとめると下記の通り。
D3D11世代GPU D3D10世代GPU --------------------------------------------- Mac OS X 10.8 OpenGL 3.2 OpenGL 3.2 Mac OS X 10.9 OpenGL 4.1 OpenGL 3.3
GPU 毎の詳細は下記のページに載せています。
● Windows 8.1 と Intel HD 4000
Intel HD 4000 の Windows ドライバも Windows 8.1 向けに
15.33.5.64.3316 (10.18.10.3316) がリリースされています。
直前に出た Windows 8.0 用 15.31.17.64.3257 (9.18.10.3257) と比べると
いろいろと機能拡張されていることがわかります。(詳細は下記リンクより)
・Intel HD Graphics 4000 OpenGL 4.0 extensions
// Windows 8.0 (2013/09/11) GL_VERSION: 4.0.0 - Build 9.18.10.3257 GL_RENDERER: Intel(R) HD Graphics 4000 GL_VENDOR: Intel GL_SHADING_LANGUAGE_VERSION: 4.00 - Build 9.18.10.3257
// Windows 8.1 (2013/10/17) GL_VERSION: 4.0.0 - Build 10.18.10.3316 GL_RENDERER: Intel(R) HD Graphics 4000 GL_VENDOR: Intel GL_SHADING_LANGUAGE_VERSION: 4.00 - Build 10.18.10.3316
例えば Atomic Counter や BPTC (Direct3D の BC6H/BC7) texture など
4.2 以上の機能も徐々に取り入れられているようです。
特に GL_ARB_debug_output 対応は、開発者にとっては非常に大きな意味を持つはずです。
glDebugMessageCallbackARB() でメッセージが送られてくることを確認しました。
これで RADEON/GeForce/Intel HD すべての GPU で debug_output が
使えることになります。
もう一点、これまで 64bit bulid で glUseProgram() がクラッシュする
現象に悩まれており、HD 4000 では 64bit バイナリが使えませんでした。
Windows 8.1 x64 + 15.33.5.64.3316 (10.18.10.3316) の組み合わせでは
64bit バイナリがきちんと動作しています。
sRGB framebuffer の問題はまだ完全ではないようです。
Uniform mat3x4 の問題は未検証です。
関連エントリ
・Mac OS X で OpenGL の描画 (Xcode5/retina)
・OpenGL のエラー判定と OpenGL 4.3 Debug Output