Vulkan 设置

本文档将通过下载、编译和运行几个示例应用的方式,介绍如何开始使用 Vulkan 图形库。

首先,请确保您已准备好合适的硬件和平台版本。您应使用支持 Vulkan 且运行 Android API 级别 24(或更高级别)的设备。

要确认您的 Android 版本,请转到设置菜单,然后依次选择关于 <设备> > Android 版本。确认您已设置合适的硬件和平台版本后,您便可以下载所需的软件。

下载

首先,您必须下载多个工具和其他软件。请注意,在 Windows 主机上,建议您不要为工具和源代码使用深层文件路径层次结构;这样做是为了绕开部分 Windows 操作系统版本对文件路径的限制。

  1. 如果您还没有 Android Studio,请下载。这将包含最新的 Android SDK。
  2. 从 Android Studio 中安装 NDK 或手动下载 NDK
  3. 要编译 Shaderc,请转到 <ndk-root>/sources/third_party/shaderc/ 并执行以下命令:
  4. 在 Mac 或 Linux 上:

        $ ../../../ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk \
         APP_ABI=all APP_PLATFORM=android-24 APP_STL:=c++_static \
         -j8 clean libshaderc_combined
        

    在 Windows 上:

        ..\..\..\ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk ^
         APP_ABI=all APP_PLATFORM=android-24 APP_STL=c++_static ^
         -j8 clean libshaderc_combined
        

    要查看更多 Shaderc 文档,请参阅着色程序编译器

导入

您可以通过以下某种方式将 Vulkan© API 示例导入到 Android Studio 中:

  1. 使用 Android Studio 自动导入。为此,请依次选择 File > New > Import Sample,然后选择 NDK > Vulkan API Samples

    您可能会看到提示缺少组件或缺少 SDK 版本的错误。看到这些消息后,请按照 Android Studio 显示的安装提示进行操作。按照这些步骤执行操作应该会自动修正该错误。

    几分钟后,Project 窗格中应该会显示如图 1 所示的窗口。

    将示例导入 Android Studio 后的 Project 窗格

    图 1. 导入示例后,用于显示所导入示例的 Project 窗格。

  2. 通过终端手动导入:
    • 下载源代码:
      git clone https://github.com/googlesamples/vulkan-basic-samples.git
    • 使用 Android Studio 打开示例。为此,请依次选择 File > Open,并转到克隆的源目录,然后点击 OK

编译

要编译您的项目,请按以下步骤操作:

  1. 在 Android Studio 的“Project”面板中选择您的项目。
  2. Build 菜单中,选择 Make Module <模块名称>;或选择 Build APK,以生成 APK。
  3. 解决所有依赖关系问题,然后编译。如图 2 所示,您可以选择要编译的各个项目,方法是从配置下拉菜单中选择相应的项目。
  4. 从配置下拉菜单中选择 drawcube 项目

    图 2. 选择要编译的各个项目。

注意其他教程示例阐述了使用集成到 Android Studio 的离线编译功能进行编译的着色程序的用法。为了方便起见,每个教程都是独立的,并且都是根据标准的 Android Studio 编译程序编写的。

执行

要运行您的项目,请依次选择 Run > Run <项目名称> 来选择要运行的 APK。

要调试 APK,请依次选择 Run > Debug <项目名称>。例如,对于 drawcube,请运行 15-draw_cube

大多数示例都具有简单的功能来示范如何使用一个特定的 API,并且大多数都会在运行后自动停止。drawcube 示例是看上去非常有趣的示例之一,它在运行时应该会显示图 3 中的图像

成功运行会显示一个多色的立方体

图 3. 成功编译的程序运行并生成一个显示画面。

使用动态加载程序

这些示例会使用在 vulkan_wrapper.h/cpp 中定义的动态加载程序帮助程序函数来检索使用 dlopen()dlsym() 的 Vulkan API 指针,而不是将指针与 vulkan.so 静态地相链接。

使用此加载程序可让代码链接到 API 级别 23 及更早版本的平台。这些更早版本的平台不包含 vulkan.so 共享库,但可在支持 Vulkan API 的设备上运行。

下面的代码段显示了如何使用动态加载程序。

    #include "vulkan_wrapper.h" // Include Vulkan_wrapper and dynamically load symbols.
    ...
    // Before any Vulkan API usage,
    InitVulkan();
    

其他资源