C++ vulkan API ジェネレーター
vulkan 仕様から C++ API を生成します。 vulkan-hpp との比較:
- vkpp はシンプルさとコンパイル時間を念頭に置いて作成されており、より軽量です
- モノリシックなほぼ 30K LOC ヘッダーを生成しません (更新: vulkan-hpp は現在 110K LOC を超え、成長し続けています)
- 使用を複数のヘッダーに分割します。これにより、たとえば、パブリック ヘッダーで前方宣言 (1K LOC 未満) のみを使用できるようになります。
- 機能が少ない
- すべてをオブジェクト指向でモデル化するわけではありません
- enum に対する自動 '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
(または vkpp をサブプロジェクトとして使用している場合は-Dvkpp:regen=true
) で構成する必要があることに注意してください。また、vulkan xml 仕様形式には時間の経過とともにいくつかの重要な (下位互換性がない) 変更があるため、現在のジェネレーターはすべてのバージョンをサポートしているわけではありません。一部の vulkan バージョンでは、単純に使用できる特定の git コミットがあります。