OpenGL 4.5 から GL_ARB_ES3_1_compatibility が含まれるようになりました。
Mobile 向け API OpenGL ES 3.1 と互換性があります。
OpenGL 4.1 GL_ARB_ES2_compatibility OpenGL 4.3 GL_ARB_ES3_compatibility OpenGL 4.5 GL_ARB_ES3_1_compatibility
実際に GeForce GTX 650 (GK107 Kepler) で OpenGL ES 3.1 context を作成したのが
下記の結果です。
GL_VERSION: OpenGL ES 3.1 NVIDIA 347.09 GL_RENDERER: GeForce GTX 650/PCIe/SSE2 GL_VENDOR: NVIDIA Corporation GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.10 Extension: GL_NV_internalformat_sample_query GL_EXT_base_instance ~ GL_OES_vertex_half_float GL_ANDROID_extension_pack_es31a
Extension として GL_ANDROID_extension_pack_es31a が含まれており、
OpenGL ES 3.1 AEP に対応していることがわかります。
つまり Android 向け Tegra K1 同様に OpenGL ES API でも D3D11 相当の機能を
利用することができるわけです。
省略部分を含めてより詳しい結果は下記のページに追加しました。
下記には Tegra K1 (Kepler) のデータを載せていますので、比べてみると
Tegra K1 と GeForce GTX 650 の結果ほとんど同じであることがわかります。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
同じ GPU Core かつドライバもおそらく同一なのでしょう。
Android で動くなら Linux も同様で、共通化されているものと思われます。
実際に OpenGL ES 3.1 context を作成することができました。
// Windows WGL
static const int opengl_es31[]= {
WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
WGL_CONTEXT_MINOR_VERSION_ARB, 1,
WGL_CONTEXT_FLAGS_ARB, 0,
WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_ES2_PROFILE_BIT_EXT,
0,
};
HGLRC hglrc= wglCreateContextAttribsARB( hDC, 0, opengl_es31 );
// X11 GLX
static const int opengl_es31[]= {
GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
GLX_CONTEXT_MINOR_VERSION_ARB, 1,
GLX_CONTEXT_FLAGS_ARB, 0,
GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_ES2_PROFILE_BIT_EXT,
None,
};
GLXContext context= glXCreateContextAttribsARB( display, config, 0, True, opengl_es31 );
上では Version 3.1 を指定していますが、Android と同じく ES 2.0 の Context に
対しても 3.1 を返すようです。
この手順は下記のページにも追加しました。
・Desktop 向け OpenGL ES 2.0 / OpenGL ES 3.0 / OpenGL ES 3.1 (AEP) 実行環境
Desktop でも Kepler 世代 GeForce を載せているならそもそも同じ GPU なので、
以前の Emulator のようなツールに頼る必要がないわけです。
逆に Mobile GPU で OpenGL ES を使う意味も無くなりつつあります。
↓ NVIDIA SHILED Tablet では OpenGL 4.5 に対応したことが発表されています。
・Impress NVIDIA、SHIELDタブレット用Android 5.0.1アップデートを配信開始
ハイエンド向け API はそろそろ統合してもよいのかもしれません。
関連エントリ
・Android Nexus 6 Adreno 420 も OpenGL ES 3.1 AEP 対応 (Direct3D 11相当)
・Android 5.0 Nexus 10 Mali-T604 は OpenGL ES 3.1 対応
・Nexus 9 Tegra K1 と ARM 64bit Denver
・NVIDIA SHIELD Tablet Tegra K1 は OpenGL ES 3.1 で Extension Pack 対応
・OpenGL ES 3.1 は OpenGL 4.x 相当で ComputeShader に対応
・OpenGL 4.3 と GL_ARB_ES3_compatibility