やっていくVulkan入門

補講3. Vulkan-Hppによる定数の表示

補講1に続きデバッグ用の知識です。


Vulkan APIでは様々な意味を表すために多くの定数が定義されています。例えば関数が成功したことを表す「VK_SUCCESS(Vulkan-Hppだとvk::Result::eSuccess)」 などはその一例ですね。

Vulkanで作ったアプリケーションをデバッグしていると、しばしばそのような定数で表される情報の内容を確認したくなることがあります。しかしこのような定数の実体は「0」とか「1」とか「-2」みたいな無骨な整数であり、こんなものを出力しても分かりにくいことこの上ありません。そこでVulkan-Hppの便利機能を使うと、こうした定数を中身の数字ではなく分かりやすい名前で表示することが出来ます。

Vulkanの仕様ではなくVulkan-Hppの機能ですが、覚えておいて損はないでしょう。


文字列変換

やり方は簡単です。to_string関数に値を通すだけです。

// 「Success」と表示される
std::cout << to_string(vk::Result::eSuccess) << std::endl;

// 「ErrorOutOfDeviceMemory」と表示される
std::cout << to_string(vk::Result::eErrorOutOfDeviceMemory) << std::endl;

// 「{ TransferDst | VertexBuffer }」と表示される
std::cout << to_string(vk::BufferUsageFlagBits::eVertexBuffer | vk::BufferUsageFlagBits::eTransferDst) << std::endl;

Vulkan-Hppでは各種の定数型についてto_string関数がオーバーロードされており、それを通すだけでいい感じにstd::string型の文字列に変換してくれるように作られています。そのためto_stringさえ通せば私たちは特に深く考えずとも、簡単に分かりやすい形で表示することが出来るのです。

デバッグログの出力などには重宝する機能となるでしょう。