2016-12-06 3 views
0

vkCreateFramebufferでフレームバッファを作成しようとすると、添付ファイルVkFramebufferCreateInfoの競合に関するデバッグレポートのコールバックにエラーが発生します。私の画像ビューは画像の使用法に矛盾があると言われていますが、そのうちの1つはカラーアタッチメントでなければならず、もう1つは深度 - ステンシルアタッチメントでなければならないため、このエラーは予期しません。Vulkanフレームバッファの添付ファイルのイメージの使用方法

正確なエラーメッセージがある:

フレームバッファアタッチメント(0)画像のIMAGE_USAGEフラグ(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)と競合。

私は既に他の例を見てきましたが、まったく同じです。

私のソースコード(錆):
https://github.com/Hossein-Noroozpour/vulkust/blob/master/src/vulkan/swapchain.rs#L218

答えて

1

まあ、私はエラーがどのように動作するかを説明することができます。疑いで、それはレイヤーのソースコードに掘るのに便利です場合:
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/tree/master/layers

それはvkCreateFramebuffer()に発行されます。

これは、提供されたレンダーパスとそのサブパスとイメージビューをチェックします。

VkImageViewが少なくとも一度入力添付ファイルとして使用されている場合、それはVkImageViewVkImageVK_IMAGE_USAGE_INPUT_ATTACHMENT_BITで作成されていると予想しています。

同様に、カラーアタッチメントはVK_IMAGE_USAGE_COLOR_ATTACHMENT_BITで、DSアタッチメントはVK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BITです。

これらの要件を満たしていることを確認してください。
レイヤのバグも問題です。あなたは最新のものを実行し、バグを確認している場合は、そのレポートはここに属しています(ソースコードを見た後)
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues

UPDATE:
私はあなたがdepth_reference.attachmentを設定する場所を確認することはできません。これを初期化して0にすると、カラーアタッチメントを深度としてサブパスに割り当てることができます。

2

フレームバッファ内のイメージの使用は、レンダーパスによって定義されます。つまり、添付ファイル0がレンダーパスの深度/ステンシルとして使用されている場合、画像はVK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT

で作成されている必要があります。つまり、レンダーパスの作成に渡すサブパスの説明を再確認し、誤って添付ファイル0を深度として使用したことはありません。

+0

こんにちは、私の最初の添付ファイルはカラーイメージで、2番目のファイルは深度ステンシルです。もしあなたが私のコードを見ることができるなら、ここで私のコードを見ることができます:https://github.com/Hossein-Noroozpour/vulkust/blob/master/src/vulkan/swapchain.rs#L218 –

+0

@HosseinNoroozpour私は 'depth_referenceをどこで設定するのか見つけません。添付ファイル '(その場合は 'color_reference.attachment')があります。 (あなたのコードを見た後に起こっていることを疑って私の答えを更新しました)。 – krOoze

+0

あなたの答えは@krOoze tnxです。今のところ私のコードはうまくいきますが、近い将来に中断する機会は少ないと思います。もし問題なければ、私はこの質問を未解決の質問として残しておきます。それについて確かに。 (一見すると、私はあなたの答えを受け入れます:D) –

関連する問題