将 Vulkan 用于图形

Vulkan 是一种现代化跨平台 3D 图形 API,利用它可以最大限度减少设备图形硬件 与您游戏之间的抽象处理。Vulkan 是 Android 上的主要底层图形 API,用于取代 OpenGL ES。OpenGL ES 在 Android 上仍受支持,但我们已不再开发其功能。与 OpenGL ES 相比,Vulkan 具有以下优势:

  • 采用更高效的架构,图形驱动程序的 CPU 开销更低
  • 通过新的优化策略提高了 CPU 性能
  • 具有无绑定 API、光线追踪等 OpenGL ES 所不具备的全新图形功能

Vulkan 从 Android 7(API 级别 24)起在 Android 上提供。所有搭载 Android 10(API 级别 29)及更高版本的 64 位 Android 设备均支持 Vulkan 1.1。85% 的活跃 Android 设备支持 Vulkan。Android 基准配置文件为支持 Vulkan 的设备定义了最低限度的功能集。

Vulkan 可以帮助您打造画面更细腻、性能更出色的游戏。Vulkan 可充分发挥现代图形硬件的潜力。在兼容的设备上,通过 Android 界面渲染框架来使用 Vulkan。Unity 和 Unreal 游戏引擎的现行版本均选择 Vulkan 作为兼容的 Android 设备上的默认渲染程序。ANGLE 项目使得在 Vulkan 的基础上以符合要求的方式实现 OpenGL ES API 成为可能。

开始

C/C++

如需了解如何在 Android 上的 C/C++ 游戏引擎中使用 Vulkan,请参阅 开始在 Android 上使用 Vulkan

此外,原生开发套件 (NDK) 文档中还有一个面向非游戏开发者的通用 Vulkan 部分,其中介绍了以下主题:

游戏引擎

关于 ANGLE

Vulkan 是首选的 Android GPU 接口。 Android 15 及更高版本 包含 ANGLE 作为可选层,用于在 Vulkan 基础上运行 OpenGL ES。 改用 ANGLE 可标准化 Android OpenGL 实现,从而提高兼容性,在某些情况下还有助于提升性能。

您可以使用各种 Android 15+ 设备,通过 ANGLE 测试 OpenGL ES 应用的稳定性和性能,只需使用以下两个 adb 命令为您的软件包启用 ANGLE 即可。将“package-name”替换为要测试的软件包。

adb shell settings put global angle_gl_driver_selection_pkgs package-name

adb shell settings put global angle_gl_driver_selection_values angle

这些设置会在设备重新启动时保留。 如需停用 ANGLE,请使用以下命令:

adb shell settings delete global angle_gl_driver_selection_pkgs

adb shell settings delete global angle_gl_driver_selection_values

通过应用清单选择使用 ANGLE

在 Android 17 及更高版本中,开发者可以在应用的清单中添加元数据标志,以请求将 ANGLE 用作 GLES 驱动程序。 这并不能保证系统会使用 ANGLE,但会发出“首选”将 ANGLE 用作 GLES 驱动程序的信号。如果无法使用 ANGLE,系统会改用 GPU 供应商的 GLES 驱动程序。

<application android:appCategory="game">
    <meta-data android:name="com.android.graphics.driver.prefer_angle" android:value="true" />
</application>

Android ANGLE on Vulkan 路线图

Android ANGLE on Vulkan 路线图

报告 ANGLE 方面的问题

如果您遇到任何 ANGLE 问题,请在我们的 问题跟踪器中提交问题,向我们报告。