Как взаимодействовать Vulkan с Android Java Activity - PullRequest
0 голосов
/ 30 октября 2018

В настоящее время Android Vulkan поддерживает только NativeActivity, но есть ли способ, которым мы можем использовать Java Activity и SurfaceView или любое другое представление и передавать Native через JNI для получения обработчика NativeWindow.

Я попытался осмотреться и связать свой вид поверхности, но у меня это не сработало, любой пример кода или пример будут оценены.

1 Ответ

0 голосов
/ 30 октября 2018

Я не знаю ни одного примера кода, но если у вас есть SurfaceView, вы хотите получить от него Surface, и из этого вы можете получить (в C) ANativeWindow для создание VkSurfaceKHR / VkSwapchainKHR. Последовательность что-то вроде:

Java: surface = surfaceView->getHolder()->getSurface();

Передать поверхность для вызова JNI в C как jobject.

C: window = ANativeWindow_fromSurface(env, jsurface);

Эта функция объявлена ​​в заголовке NDK android/native_window_jni.h.

Вы захотите зарегистрировать обратные вызовы с помощью SurfaceView SurfaceHolder и правильно управлять жизненным циклом окна (который связан с жизненным циклом Activity).

...