惰性Log

技術系の話題を中心に書いています

Vulkanメモ

この記事は落書きです.
Vulkanに関する日本語の情報が少ないので、落書きでももしかしたら需要あるかもしれんので公開することに.
とはいえ、仕様書を読んだわけではないので信頼性は低い。

初期化

インスタンスの生成

ウインドウの生成やらをしておく. 私はSDL2.0を使った. vkCreateInstance()でインスタンスの生成が可能.
検証レイヤの有効化もこの時点で行う.
生成に成功したかどうかはVk_Resultを使うのが良い.成功時のVK_SUCCESSは0を返すので, ポインタの感覚で判定すると痛い目に合う.

物理デバイスの選択.

GPUを列挙して選ぶ. vkEnumeratePhysicalDevices()で列挙できる.
特に理由が無ければ一番最初のデバイスを選んどけば問題ないと思う.

バイスキューインデックスの選択.

CPUとGPU間のキュー.
vkGetPhysicalDeviceQueueFamilyProperties()で列挙.

論理デバイスの生成.

コマンドプールの準備.

サーフェスの生成.

スワップチェインの生成.

デプスバッファの生成.

レンダパスの生成.

コマンドバッファの準備.

ディスクリプタ周りの準備.

パイプラインレイアウトなどの生成

ループ

レンダパスの開始.

コマンドバッファの開始.

コマンド発行.

レンダパスの終了.

コマンドバッファの終了.

コマンドの送信.

Present処理.

終了処理

各種解放処理

開放する順番が決まっているので面倒くさい. もしレンダラを一つしか生成しないのであればOSに任せてしまってもいいかもしれない.

やることがめちゃ多い. 取り合えず枠だけ書いた.気が向いたら更新予定.