最近の Android NDK r9 では、OpenGL ES 3.0 のサポートが明らかになりました。samples/gles3jni
JNI/ネイティブ コードから OpenGL ES 3.0 を使用する方法を示す例があります。サンプルは、次の 2 つの方法でビルドできます。
- APIレベル11以降に対応
- API レベル 18 以降が必要です。
どちらのバージョンにも、OpenGL ES 3.0 をサポートしていないデバイス用の OpenGL ES 2.0 フォールバック パスが含まれています。ただし、最初のケースの例は、LOCAL_LDLIBS
オプションを使用して OpenGL ES 2 に対して静的にリンクされています-lGLESv2
。2 番目のケースでは、同じ方法で GLES 3 と静的にリンクされます。
初期化は次のようになります。
const char* versionStr = (const char*)glGetString(GL_VERSION);
if (strstr(versionStr, "OpenGL ES 3.") && gl3stubInit()) {
g_renderer = createES3Renderer();
} else if (strstr(versionStr, "OpenGL ES 2.")) {
g_renderer = createES2Renderer();
}
静的リンクをまったく省略して、GLES 2 または 3 を から動的にロードするにはどうすればよい.so
ですか?