首页 > 解决方案 > 如何将 Vulkan 与 Android Java Activity 交互

问题描述

目前android Vulkan只支持NativeActivity,但是有什么方法可以使用Java Activity和SurfaceView或者其他任何view,通过JNI传递Native来获取NativeWindow handler。

我尝试环顾四周并链接我的表面视图,但它对我不起作用,任何示例代码或示例将不胜感激。

标签: androidandroid-ndkvulkannative-activity

解决方案


我不知道任何示例代码,但如果你有一个SurfaceView你想从中获取的Surface,你可以从中获取(在 C 中)ANativeWindow用于创建VkSurfaceKHR/的VkSwapchainKHR。序列类似于:

爪哇:surface = surfaceView->getHolder()->getSurface();

将表面传递给 C 的 JNI 调用作为jobject.

C:window = ANativeWindow_fromSurface(env, jsurface);

该函数在 NDKandroid/native_window_jni.h标头中声明。

您需要使用SurfaceView's注册回调SurfaceHolder并正确管理窗口生命周期(与 Activity 生命周期相关联)。


推荐阅读