当前,android Vulkan仅支持NativeActivity,但是有什么方法可以使用Java Activity和SurfaceView或任何其他视图,并通过JNI传递Native以获得NativeWindow处理程序。
我尝试环顾四周并链接我的表面视图,但对我而言不起作用,任何示例代码或示例都将不胜感激。
答案 0 :(得分:1)
我暂时不知道任何示例代码,但是如果您有一个Surface
,则希望从中获取ANativeWindow
,然后您可以从中获取(在C语言中) VkSurfaceKHR
用于创建VkSwapchainKHR
/ surface = surfaceView->getHolder()->getSurface();
。序列类似于:
Java:jobject
将表面作为window = ANativeWindow_fromSurface(env, jsurface);
传递给C的JNI调用。
C:android/native_window_jni.h
该函数在NDK SurfaceView
标头中声明。
您将要向SurfaceHolder
的{{1}}注册回调,并正确管理窗口生命周期(与活动生命周期相关联)。