android - 如何在 OpenGL ES 和 Vulkan 之间传递纹理?

标签 android 3d opengl-es rendering vulkan

我需要将在 OpenGL ES 中生成的纹理传递给 Vulkan,在上面渲染一些东西,然后传递回 OpenGL ES。有没有快速的方法来做到这一点? 读取到 cpu 并传递给 gpu 每帧听起来对于实时 Android 应用来说太慢了。

最佳答案

在 Android 上,最广泛支持的方法是使用 AHardwareBuffer、VK_ANDROID_external_memory_android_hardware_buffer 和 VK_KHR_external_semaphore_fd 以及 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT 句柄。这些扩展尚未得到广泛支持——但也不是任何替代方案——但这是 UI 框架(通过 Skia)将使用的,因此它最终应该会得到广泛支持。

在 OpenGL ES 端,您可以将 AHardwareBuffer 导入 EGLImage ( EGL_ANDROID_image_native_buffer ),然后从那里导入 GL 纹理 ( GL_OES_EGL_image_external_essl3 )。使用 EGL_ANDROID_native_fence_sync 完成同步导入/导出.

关于android - 如何在 OpenGL ES 和 Vulkan 之间传递纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56970011/

相关文章:

math - 平面的 3D 旋转

graphics - 确定三角形所在的体素

android - 加载均匀矩阵 1104 GL_Invalid_Operation Android OpenGLES 2.0

ios - 如何在 OpenGL ES 2.0 中获得 "Glow"着色器效果?

android - Android 设备上 OpenGL 中的适当内存管理

Android Studio 启动失败 - ClassNotFoundException : com. intellij.ide.plugins.PluginManager

java - Android 中 Dropbox 中的内部服务器错误

3d - 给定一个体素八叉树,如何渲染光滑的表面?

android - 如何在android Camera上设置Open GLES效果?

java - 二进制 XML 文件行 #18 : Error inflating class android. support.design.widget.CollapsingToolbarLayout