6

見栄えのする画像は で始まりますが、一度提示された後になりますVK_IMAGE_LAYOUT_UNDEFINEDVK_IMAGE_LAYOUT_PRESENT_SRC_KHR

多くの例では、を作成した直後にすべてvkImagesを移行します。これにより、forを使用できます。ただし、スワップチェーンの作成直後に移行を行うことは許可されていません。VK_IMAGE_LAYOUT_PRESENT_SRC_KHRvkSwapchainVK_IMAGE_LAYOUT_PRESENT_SRC_KHRoldLayout

提示可能な画像の使用は、画像が によって返された後、 によってvkAcquireNextImageKHR提示される前にのみ行う必要がありますvkQueuePresentKHRこれには、イメージ レイアウトとレンダリング コマンドの遷移が含まれます。

スワップチェーンの画像レイアウトを正しく処理するためのオプションは何ですか?

4

2 に答える 2

6

3 つのオプションがあります。最良から最悪への順序 (IMO):

  1. 添付ファイルの initialLayout を renderPass toVK_IMAGE_LAYOUT_UNDEFINEDまたは transition fromVK_IMAGE_LAYOUT_UNDEFINEDに毎回設定するだけです。これは許可されており、画像内に残っているデータを気にしないことを意味します。とにかく、ほとんどの場合、画像を消去または完全に上書きします。

    有効な使用法 [VkImageMemoryBarrier の]
    [...]

    • oldLayout はVK_IMAGE_LAYOUT_UNDEFINEDVK_IMAGE_LAYOUT_PREINITIALIZEDまたはバリアの影響を受ける画像領域の現在のレイアウトでなければなりません
  2. 既にパイプラインを通過した画像を追跡しoldLayout、commandBuffer を記録するときにそれに応じて選択します。

  3. スワップチェーンを作成した後に移行を行いますが、移行中にアプリケーションがイメージを所有していることを確認するためにvkAcquireNextImageKHRとを使用します。vkQueuePresentKHR画像がどの順序で取得されるかは保証されていないため、1 つの画像が返されない可能性があります。

于 2016-05-30T11:01:22.047 に答える