This sample demonstrates how to use OpenGL ES 3.0 from JNI/native code. The sample can be built two different ways: * Compatible with API level 11 and later [*1] * Require API level 18 or later. Both versions include an OpenGL ES 2.0 fallback path for devices that don't support OpenGL ES 3.0. To build and install the sample: $ ln -s AndroidManifest-$N.xml AndroidManifest.xml $ ln -s Android-$N.mk jni/Android.mk $ $ANDROID_SDK/tools/android update project --path . --target android-$N $ ../../ndk-build $ ant debug $ adb install bin/GLES3JNIActivity-debug.apk where $N is '11' or '18' and ANDROID_SDK is the root of your SDK installation. The OpenGL ES 3.0 rendering path uses a few new features compared to the OpenGL ES 2.0 path: * Instanced rendering and vertex attribute divisor to reduce the number of draw calls and uniform changes. * Vertex array objects to reduce the number of calls required to set up vertex attribute state on each frame. * Explicit assignment of attribute locations, eliminating the need to query assignments. [*1] The only dependency on API level 11 is the call to setEGLContextClientVersion in GLES3JNIView. With a custom EGLConfigChooser and EGLContextFactory the sample would be compatible with older API levels.