LoginSignup
7
3

More than 3 years have passed since last update.

初めてのvulkanプログラム第1章 ②Vulkan プログラムでの処理の流れ

Last updated at Posted at 2018-12-02

目次に戻る

step1 インスタンスとデバイスの列挙

Vulkan application は、Instanceの初期化から始めます。アプリケーションごとの状態は、VKInstanceオブジェクトに格納されます。インスタンスが作成されるとvulkanライブラリーが初期化されアプリケーションの情報を実装することができます。vulkanライブラリーを初期化した後、どのデバイスを使用するか探して選択する必要があります。vulkanでは、複数のデバイスを使用することができます。

step2 キューとデバイス

使用するデバイスをより具体的に記述した論理デバイスを作成する必要があります。
キューファミリーには、いくつかの種類に分かれており、各キューは、制限されたコマンドを使用することができます。例えば計算コマンドのみを行うキューや、メモリーの操作するコマンドキューなどがあります。キューのcommandは、そのグラフィクスデバイスによって異なる場合があります。

step3 ウィンドウサーフェスとスワップチェーン

Vulkanは、プラットフォームに依存しないAPIなのでそれ単体でウィンドウシステムとして機能させることができません。vulkanと、ウィンドウシステムの間を接続させるには、WSI(Windows system Integration)拡張させる必要があります。そのためにウィンドウサーフェススワップチェーンが必要です。

サーフェスは、プラットフォーム上のウィンドウを抽象化したものです。Vulkanでは、この機能は、オプションなので、ウィンドウが必要ない場合には、非表示にすることができます。

スワップチェーンは、レンダリング結果をサーフェスに提示する機能を提供します

step4 Image viewとバッファ

スワップチェーンが作成されたので、その中のImageハンドラーを取得し、その後のレンダリング処理に渡します。
レンダリング処理に渡すものは、2つあり、vkImageViewVkFrameBufferです。

vkImageViewは、Imageオブジェクトをパイプラインに含むには、必要です
VkFrameBufferは、レンダーパスインスタンスが使用する特定のメモリを表します。

step5 レンダーパス

Vulkanのレンダリングパスでは、レンダリング操作中に、使用される画像のタイプ使用方法、その内容の処理方法などを指定しています。

step6 グラフィクスパイプライン

3dを2dに変換するといったいわゆるシェーダモジュールに関する処理を記述します。
グラフィクスパイプライン Wikipedia

step7 コマンドバッファーとコマンドプール

Vulkanにおける描写などの操作は、あらかじめキューに登録しておく必要があります。これらの命令は、コマンドプールに記録されます。そしてコマンドプールは、コマンドバッファを通してGPUに処理を渡します。

step8 メインループ

描写ループは、まずスワップチェーンからイメージを取得します。次にイメージに適切なコマンドバッファを選択しvkQueueSubmit()を行い実行します。最後に画像をスワップチェーンに戻して画像を描写します。

最後に

つたない文章を最後まで見ていただきありがとうございます。次回からは、上のステップを順にプログラムを書いていきます。拡散してもらえると嬉しいです。

連絡先

tweeter: tositada_nakada
mail: nakadasanda@outlook.com

寄付

paypal: tositada_nakada
Amazon: 欲しいものリスト

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3