2016-08-11 4 views
0

これを行うためのコードスニペットはありますか? 私はVkImageにオフスクリーンレンダリングを行い、その結果をpngにダンプします。私はVkBufferを作成し、vkCmdCopyImageToBufferを実行しましたが、前進する方法がわかりません。VkBufferの内容をVulkanのデータで満たした後、その内容を読み取る方法は?

編集: 私はVkBufferCreateInfoでVkBufferを作成しています。 vkAllocateMemoryを割り当てていないのは、GPUメモリに関連付ける必要がないからです。その後、私はvkCmdCopyImageToBufferを実行します。それで、データがVkBufferにコピーされたと仮定してmemcpyを実行する方法。

+0

あなたの質問は何ですか? VkImageのデータを読み込む方法、または2Dピクセル配列をPNGに変換する方法は? –

+0

@NicolBolas VkImageデータの読み方は? –

+0

しかし、あなたは*画像のデータを読んだだけです。あなたは 'vkCmdCopyImageToBuffer'を使用しました。それは、Vulkanがあなたのために行うデータのすべての "読書"です。データをコピーしたばかりのバッファを読み取る方法を尋ねていますか?あなたは、バッファ内のデータがどのように格納されているか尋ねていますか? Vulkanの仕様ではこれらの両方が説明されているためです。だから、あなたが混乱していることは明らかではありません。 –

答えて

1

データをコピーしたバッファのメモリをマップし、void*からデータをプルする必要があります。 には、バッファにメモリを割り当てるのにがあります。使用するメモリは、ホストが可視である必要があります。

バッファーに使用したメモリー・ヒープが一貫性がない場合は、フェンスがトリガーされた後、データのコピーを開始する前に、マップされた範囲にvkInvalidateMappedMemoryRangesを使用する必要があります。

関連する問題