3-7. フレームバッファ

3-3. レンダーパスにおいてレンダーパスについて解説しました。レンダーパスは処理(サブパス)とデータ(アタッチメント)のつながりと関係性を記述しますが、具体的な処理内容やどのデータを扱うかについては関与しません。具体的な処理内容はコマンドバッファに積むコマンドによって決まりますが、具体的なデータの方を決めるためのものがフレームバッファです。フレームバッファを介して「0番のアタッチメントはこのイメージビュー、1番のアタッチメントは…」という結び付けを行わなければレンダーパスは役に立ちません。

フレームバッファは vk::DevicecreateFramebuffer メソッドで作成できます。

前節で作成したイメージビューの情報を初期化用構造体に入れていますね。これで0番のアタッチメントがどのイメージビューに対応しているのかを示すことができます。

ここで注意ですが、初期化用構造体にレンダーパスの情報を入れてはいるものの、これで無事レンダーパスとイメージビューが結びついた訳ではありません。ここで入れているレンダーパスの情報はあくまで「このフレームバッファはどのレンダーパスと結びつけることができるのか」を表しているに過ぎず、フレームバッファを作成した時点で結びついた訳ではありません。フレームバッファとレンダーパスを本当に結びつける処理は次節で行います。

余談です。パイプラインの作成処理でもレンダーパスの情報を渡していますが、ここにも同じ事情があります。フレームバッファとパイプラインは特定のレンダーパスに依存して作られるものであり、互換性のない他のレンダーパスのために働こうと思ってもそのようなことはできないのです。結びつけを行っている訳ではないのにレンダーパスの情報を渡さなければならないのはそのためです。


この節ではフレームバッファの作成をやりました。次節ではいよいよ今まで作ったものを全て繋げて動かします。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です