116f03928743b01638419874e2b6300b52da6eb4cJesse Hall/* void glDrawElementsIndirect ( GLenum mode, GLenum type, const void *indirect ) */ 216f03928743b01638419874e2b6300b52da6eb4cJesse Hallstatic void android_glDrawElementsIndirect(JNIEnv *_env, jobject, jint mode, jint type, jlong indirect) { 316f03928743b01638419874e2b6300b52da6eb4cJesse Hall // In OpenGL ES, 'indirect' is a byte offset into a buffer, not a raw pointer. 416f03928743b01638419874e2b6300b52da6eb4cJesse Hall // GL checks for too-large values. Here we only need to check for successful signed 64-bit 516f03928743b01638419874e2b6300b52da6eb4cJesse Hall // to unsigned 32-bit conversion. 6b5da0d78d2fde6abbfd387db4a3b218a5c301c20Andreas Gampe if (sizeof(void*) != sizeof(jlong) && indirect > static_cast<jlong>(UINT32_MAX)) { 716f03928743b01638419874e2b6300b52da6eb4cJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large"); 816f03928743b01638419874e2b6300b52da6eb4cJesse Hall return; 916f03928743b01638419874e2b6300b52da6eb4cJesse Hall } 1016f03928743b01638419874e2b6300b52da6eb4cJesse Hall glDrawElementsIndirect(mode, type, (const void*)indirect); 1116f03928743b01638419874e2b6300b52da6eb4cJesse Hall} 1216f03928743b01638419874e2b6300b52da6eb4cJesse Hall 13