2

最近の Android NDK r9 では、OpenGL ES 3.0 のサポートが明らかになりました。samples/gles3jniJNI/ネイティブ コードから 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ですか?

4

2 に答える 2

1

私はそれをテストするための 4.3 デバイスを持っていませんでしたが、私の理解では、最初の方法は実際には GLES 3 が使用可能であればそれを使用するため、libGLESv3 を動的にリンクすることと同等です。

libglesxx.so との動的リンクも可能ですが、ショートカットがなく、使用するすべての関数を dlsym する必要があります。それは価値がありません、私見。

于 2013-07-28T19:42:58.600 に答える