C++ vulkan api 生成器
从 vulkan 规范生成 C++ api。与 vulkan-hpp 的比较:
- vkpp 在创建时考虑了简单性和编译时,更轻量级
- 不会生成几乎 30K LOC 的整体标头(更新:vulkan-hpp 现在高达 >110K LOC 并继续增长)
- 将使用拆分为多个标头,这允许您在公共标头中仅使用前向声明(小于 1K LOC)
- 更少的功能
- 并没有对一切进行面向对象建模
- 枚举没有自动“to_string”函数
- 可能不太复杂的错误处理
- 只比普通 C api 提供真正的优势
- 将所有内容放在名称空间中
- 类型安全枚举
- 自动严重错误检查
- 结构体构造函数(sType设置、默认初始化)
- 函数的“向量化”
-
vk::queueSubmit(queue, {info1, info2, info3}, fence)
有效
- 具有不同的(可选)动态调度机制。如果您愿意,vkpp 允许隐式动态分派(对 android 可能有用)
- 缺点:不随 vulkan sdk/vulkan 包一起提供
- 这意味着您可能会在使用此 api 时遇到版本兼容性问题(只需使用与您为项目安装的 vulkan.h 版本相匹配的正确 git 标签)
如果您需要上述不支持的功能之一,请查看 vulkan-hpp (或者如果您认为它们在这里合理,请在问题中用推理来描述它们)。感谢问题报告、贡献和建议!
版本控制
您可以通过将vk.xml
替换为您要使用的版本来更改生成标头的 vulkan 版本。请注意,您必须使用-Dregen=true
(或-Dvkpp:regen=true
如果您使用 vkpp 作为子项目)配置 meson 来重新生成标头。当前的生成器也不支持所有版本,因为 vulkan xml 规范格式随着时间的推移发生了一些重大(不向后兼容)的变化。对于某些 vulkan 版本,您可以简单地使用特定的 git 提交。