Как передать текстуру между OpenGL ES и Vulkan? - PullRequest
0 голосов
/ 10 июля 2019

Мне нужно передать текстуру, сгенерированную в OpenGL ES, в Vulkan, визуализировать что-то на ней, а затем вернуться обратно в OpenGL ES.Есть ли быстрый способ сделать это?Чтение в CPU и передача в gpu каждый кадр звучит слишком медленно для приложения Android в реальном времени.

1 Ответ

0 голосов
/ 10 июля 2019

В Android наиболее широко поддерживаемым способом сделать это будет использование AHardwareBuffer, VK_ANDROID_external_memory_android_hardware_buffer и VK_KHR_external_semaphore_fd с ручками VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT.Эти расширения пока широко не поддерживаются - но ни одна из них не является альтернативой - но это то, что будет использовать инфраструктура пользовательского интерфейса (через Skia ), поэтому в конечном итоге она должна стать широко распространенной.

Со стороны OpenGL ES вы можете импортировать AHardwareBuffer в EGLImage ( EGL_ANDROID_image_native_buffer ) и оттуда в текстуру GL ( GL_OES_EGL_image_external_essl3 ).Импорт / экспорт синхронизации выполняется с помощью EGL_ANDROID_native_fence_sync .

...