vkCreateImageでスワップチェーンを作成しましたが、適切なメモリ(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)を割り当てていました。 vkQueueSubmitとvkQueueWaitIdleの後に画像データを持っています。アプリケーションによって作成されたイメージでvkCmdCopyImageToBufferが動作しない
によりステージング・バッファの利点に、私はVK_MEMORY_PROPERTY_DEVICE_LOCAL_BITで上記メモリを作成し、コマンドバッファにvkCmdCopyImageToBufferをしましたが、結果はすべての値は0である。しかし、私はちょうど私が上の画像にvkCreateBufferを関連付けるとvkCmdCopyBufferを行う場合は、すべてのレンダリングされたイメージを取得します。
これはシステムスワップチェーンでない限り、vkCmdCopyImageToBufferを実行できないことが予想されますか?
編集1:
私はメモリタイプのVK_MEMORY_PROPERTY_DEVICE_LOCAL_BITでvkCreateImageにレンダリングしています。私がvkCmdCopyImageToBufferを実行すると、このバッファの画像データはすべて0になります。 今、vkCreateBufferを作成し、上記の画像メモリにvkBindBufferMemoryでバインドします。その後、私はvkCmdCopyBufferをやって、画像データを取得します。 vkCmdCopyImageToBufferが機能しないのはなぜですか?私はイメージのためにメモリを割り当てているからですか?メモリを割り当てないスワップチェーンイメージの場合、vkCmdCopyImageToBufferでうまく動作するためです。この作業をするために、割り当てられたイメージメモリにバッファをバインドする余分なオーバーヘッドが必要なのはなぜですか?
「*私は*私自身のスワップチェーンを作成していた」あなたはあなた自身のメモリからスワップチェーンを作成することはできません。スワップチェーンイメージ用のメモリは、実装で所有されています。 –
@NicolBolasシステムのスワップチェーンは使用しませんでしたが、画像を作成してフェンスを使用しました。そのため、システムのスワップチェーンのように動作します。私はこれらの画像でオフスクリーンレンダリングを行っています。 –
私の主張は、「スワップチェーンのように振る舞うかもしれませんが、スワップチェーンではありません」ということです。これは、作成したイメージの一部です。どのような場合でも、どの種類のメモリでどのオブジェクトを割り当てるかはあなたの質問では分かりません。おそらく、あなたが何をしているのかを明確にするためのコードを投稿することができます。 –