Android 使用NativeActivity优于JNICALL回调?

Android 使用NativeActivity优于JNICALL回调?,android,android-ndk,java-native-interface,glsurfaceview,native-activity,Android,Android Ndk,Java Native Interface,Glsurfaceview,Native Activity,对于跨平台OpenGL游戏引擎的开发 使用以下各项是否具有性能优势: NativeActivity或android_native_应用程序_glue 结束: 定义活动,创建GLSurfaceView,并将呈现程序设置为调用本机方法;实现JNI调用自己 如果使用NativeActivity,是否有任何缺点:例如,您仍然可以使用Google Play游戏服务 请记住,即使是“本机活动”也仍然严重基于jni——它只使用库存java代码,而不是您编写的自定义代码。是的,这是我的假设,尽管我不是100

对于跨平台OpenGL游戏引擎的开发

  • 使用以下各项是否具有性能优势:

    • NativeActivity或android_native_应用程序_glue

      结束:

    • 定义活动,创建GLSurfaceView,并将呈现程序设置为调用本机方法;实现JNI调用自己

  • 如果使用NativeActivity,是否有任何缺点:例如,您仍然可以使用Google Play游戏服务


  • 请记住,即使是“本机活动”也仍然严重基于jni——它只使用库存java代码,而不是您编写的自定义代码。是的,这是我的假设,尽管我不是100%确定。因此,实际上,我假设它仍在每帧进行JNI调用,这大概是开销的重要部分?在现代设备上,调用本机代码时的JNI调用开销以纳秒为单位。只有当你做了很多的时候才有意义。从Java调用VM的速度要慢得多,但我们仍然在谈论几微秒。但是,我建议您避免使用GLSurfaceView,而只使用普通的SurfaceView,因为这样您就可以完全控制EGL上下文和线程。如果你想做一个游戏引擎,你应该先通读所有的。啊,很公平,谢谢你的链接。当您说“从Java回调VM”时,您是指“从native/c回调VM”吗