Vulkan 示例

Vulkan Samples banner

简介

Vulkan 示例是帮助您开发优化的 Vulkan 应用程序的资源集合。

如果您是 Vulkan 的新手,那么 API 示例是开始的正确选择。此外,您可能会发现以下链接很有用

性能示例显示了推荐的最佳实践以及实时分析信息。它们更高级,但也包含详细的教程,其中包含更详细的解释。

目标

  • 创建一个资源集合,演示 Vulkan 中最佳实践的建议

  • 创建教程,解释最佳实践的实现,并包含性能分析指南

  • 创建一个 框架,该框架可用作参考材料,也可用作 Vulkan 高级实验的沙箱

设置

先决条件:具有 git 大文件存储 (git-lfs)git

使用以下命令克隆带有子模块的存储库

git clone --recurse-submodules https://github.com/KhronosGroup/Vulkan-Samples.git
cd Vulkan-Samples

按照以下适用于您平台的构建说明进行操作。

完整的存储库非常大,并且某些 ISP 在进行克隆时似乎难以提供与 github 的稳定连接。

如果您注意到诸如子模块下载的报告速率为每秒数十 KB,或者发生致命超时错误等问题,则这些问题可能是由于您 ISP 内部网络中到 github 的网络路由问题所致,而不是您自己的网络设置中的任何问题。

让 ISP 承认存在此类问题非常困难,更不用说修复它们了。

一种解决方法是在下载子模块之前切换存储库以使用 ssh 协议,这可以通过例如以下方式完成:

git clone git@github.com:KhronosGroup/Vulkan-Samples.git
cd Vulkan-Samples
perl -i -p -e 's|https://(.*?)/|git@\1:|g' .gitmodules
git submodule sync
git submodule update

如果遇到此连接问题,这可能是一个不错的选择,但您必须设置 GitHub ssh 密钥身份验证才能使用 ssh 协议 - 有关详细信息,请参阅 使用 SSH 连接到 GitHub。因此,它不是我们可以作为存储库默认值实现的解决方案。

另一个可能有所帮助的选项是通过 VPN 服务运行 github。

构建

支持的平台

用法

以下展示了一些命令行使用示例,说明如何配置和运行 Vulkan 示例。

请确保从仓库的根目录运行示例。否则,示例将无法找到资源。 ./build/app/bin/<BuildType>/<Arch>/vulkan_samples

# For the entire usage use
vulkan_samples --help

# For subcommand usage use
vulkan_samples <sub_command> --help

# Run Swapchain Images sample
vulkan_samples sample swapchain_images

# Run AFBC sample in benchmark mode for 5000 frames
vulkan_samples sample afbc --benchmark --stop-after-frame 5000

# Run compute nbody using headless_surface and take a screenshot of frame 5
# Note: headless_surface uses VK_EXT_headless_surface.
# This will create a surface and a Swapchain, but present will be a no op.
# The extension is supported by Swiftshader(https://github.com/google/swiftshader).
# It allows to quickly test content in environments without a GPU.
vulkan_samples sample compute_nbody --headless_surface -screenshot 5

# Run all the performance samples for 10 seconds in each configuration
vulkan_samples batch --category performance --duration 10

# Run Swapchain Images sample on an Android device
adb shell am start-activity -n com.khronos.vulkan_samples/com.khronos.vulkan_samples.SampleLauncherActivity -e sample swapchain_images

许可证

请参阅 LICENSE

此项目有若干第三方依赖项

此项目使用来自 vulkan-samples-assets 的资源。每个资源都有其自己的许可证。

商标

Vulkan 是 Khronos Group Inc. 的注册商标。

贡献

由 Arm 捐赠给 Khronos,并由 Sascha Willems 和 Adam Sawicki 进一步贡献。请参阅 CONTRIBUTORS 查看完整的贡献者列表。

另请参阅 CONTRIBUTING 获取贡献指南。