本文档将通过下载、编译和运行几个示例应用的方式,介绍如何开始使用 Vulkan 图形库。
首先,请确保您已准备好合适的硬件和平台版本。您应使用支持 Vulkan 且搭载 Android API 级别 24 或更高级别的设备。
如需确认您的 Android 版本,请转到设置菜单,然后依次选择关于 <设备> > Android 版本。确认您已设置合适的硬件和平台版本后,您便可以下载所需的软件。
下载
首先,您必须下载多个工具和其他软件。请注意,在 Windows 主机上,建议您不要为工具和源代码使用深层文件路径层次结构;这样做是为了绕开部分 Windows 操作系统版本对文件路径的限制。
导入
在本部分中,您需要下载 LunarG Vulkan© 代码库,为 API 示例生成 Android Studio 项目,然后将这些项目导入 IDE:
打开终端并将源代码下载到您的开发目录:
cd dev-directory git clone --recursive https://github.com/LunarG/VulkanSamples.git
按照以下说明(选自在 Android 上构建)生成适用于 Android 的示例项目:
cd VulkanSamples/API-Samples cmake -DANDROID=ON -DABI_NAME=abi cd android python3 compile_shaders.py
支持的 ABI 包括以下内容:
armeabi-v7a
arm64-v8a
x86
x86_64
设置环境变量以指定 Android NDK 和 SDK 的路径:
export ANDROID_SDK_ROOT=/path/to/sdk-directory export ANDROID_NDK_HOME=/path/to/ndk-directory
示例的当前
targetSdk
版本为 26,因此您可能需要使用 SDK 管理器更新工具。打开 Android Studio。依次选择 File > Open,然后再选择
VulkanSamples/API-Samples/android/build.gradle
。
“Project”窗格会显示如图 1 所示的窗口。
图 1. 导入示例后,用于显示所导入示例的 Project 窗格。
编译
您可以在 Android Studio 中或通过命令行编译项目。
Android Studio
- 依次选择 File > Project Structure。选择 SDK Location 并确保已设置 SDK 和 NDK 位置。
- 在 Android Studio 的“Project”面板中选择您的项目。
- 从 Build菜单中,选择 Make Module <模块名称>;或选择 Build APK,以生成 APK。
- 解决所有依赖关系问题,然后编译。如图 2 所示,您可以选择要编译的各个项目,方法是从配置下拉菜单中选择相应的项目。

图 2. 选择要编译的单个项目。
命令行
使用以下命令从命令行构建项目(确保您仍位于 VulkanSamples/API-Samples/android 目录中):
./gradlew build
执行
要运行您的项目,请依次选择 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();
其他资源
- Vulkan 规范
Khronos Group 遵循 Vulkan 规范。请访问 Vulkan 首页,查看完整规范、培训和教程。
- Shaderc
NDK 中的 Shaderc 代码是 Shaderc 代码库的下游代码。如果您需要最新的 Shaderc,请参阅着色器编译器。