私はシャーマンのアプローチは罰金であると確信しているが、Googleのドキュメントは、他の二つのアプローチを推奨しているように見えるん。ここから:https://developer.android.com/guide/topics/graphics/opengl.html
アプリケーションマニフェストに必要な最小値より高いバージョンからのOpenGL ESの機能を使用する前に、アプリケーションがデバイスで使用可能なAPIのバージョンを確認する必要があります。
上位レベルのOpenGL ESコンテキスト(EGLContext)を作成しようとしましたが、 の結果を確認してください。
最小限サポートされているOpenGL ESコンテキストを作成し、バージョン の値を確認してください。
次のコード例は、EGLContextを作成して結果を確認して、利用可能な OpenGL ESバージョンを確認する方法を示しています。
private static double glVersion = 3.0;
private static class ContextFactory implements GLSurfaceView.EGLContextFactory {
private static int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
public EGLContext createContext(
EGL10 egl, EGLDisplay display, EGLConfig eglConfig) {
Log.w(TAG, "creating OpenGL ES " + glVersion + " context");
int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION, (int) glVersion,
EGL10.EGL_NONE };
// attempt to create a OpenGL ES 3.0 context
EGLContext context = egl.eglCreateContext(
display, eglConfig, EGL10.EGL_NO_CONTEXT, attrib_list);
return context; // returns null if 3.0 is not supported;
}
}
のcreateContext()メソッドのショーは、上記nullを返した場合、あなたのコード ではなくのOpenGL ES 2.0コンテキストを作成してにフォールバックする必要があります この例では、OpenGL ESのための3.0バージョンを確認する方法を示していますそのAPIだけを を使用してください。あなたがあれば、このアプローチで
// Create a minimum supported OpenGL ES context, then check:
String version = javax.microedition.khronos.opengles.GL10.glGetString(
GL10.GL_VERSION);
Log.w(TAG, "Version: " + version);
// The version format is displayed as: "OpenGL ES <major>.<minor>"
// followed by optional content provided by the implementation.
:
次のコード例では、最初にサポートされる最小のコンテキストを作成することにより、OpenGL ESの バージョンを確認し、 は、バージョン文字列をチェックする方法を示していますデバイスが 上位APIバージョンをサポートしていることを発見した場合は、最低限のOpenGL ES コンテキストを破棄し、より高い利用可能なAPI バージョンで新しいコンテキストを作成する必要があります。