android - 如何将 Vulkan 与 Android Java Activity 交互
问题描述
目前android Vulkan只支持NativeActivity,但是有什么方法可以使用Java Activity和SurfaceView或者其他任何view,通过JNI传递Native来获取NativeWindow handler。
我尝试环顾四周并链接我的表面视图,但它对我不起作用,任何示例代码或示例将不胜感激。
解决方案
我不知道任何示例代码,但如果你有一个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 生命周期相关联)。
推荐阅读
- aem - _cq_dialog.xml _cq_dialog/.content.xml 之间有什么区别吗?
- java - 如何在 oracle atg 11.3.2 中使用“编辑器类”属性?
- azure - Azure Service Fabric - 如何配置容器被强制终止之前的时间间隔
- mysql - MySQL上出现此错误1241的原因可能是什么
- javascript - 这里地图自动缩放以适合所有标记
- javascript - 嵌套 App.post 和 App.get,好做法还是坏主意?
- pine-script - tradingview:Pine 无法确定系列的参考长度。尝试使用 max_bars_back
- c++ - std::set 用于双精度值的自定义比较函数。插入()不起作用
- mongodb - 无法将数据从我的独立实例导入 MongoDB atlas 集群
- powershell - Powershell:在一个属性上获取唯一性,同时对两个属性进行排序