2016-08-11 26 views
0

有沒有任何代碼片段來做到這一點? 我正在做一個離線渲染到VkImage,並且想把結果轉儲到png。我創建了一個VkBuffer並執行一個vkCmdCopyImageToBuffer,但不知道如何前進。如何在Vulkan中填寫數據後讀取VkBuffer的內容?

編輯: 我正在用它的VkBufferCreateInfo創建一個VkBuffer。不分配任何vkAllocateMemory,因爲我不想將它與任何GPU內存相關聯。在此之後,我做了vkCmdCopyImageToBuffer。那麼,如何將數據複製到VkBuffer中來執行memcpy。

+0

所以......你的問題是什麼?如何讀取VkImage的數據或如何將二維像素陣列轉換爲PNG? –

+0

@NicolBolas如何讀取VkImage數據? –

+0

但你*只是*讀取圖像的數據。你使用了'vkCmdCopyImageToBuffer'。這就是Vulkan將爲你做的數據的「讀取」。你在問如何讀取剛剛複製數據的緩衝區?你問的是如何存儲緩衝區中的數據?因爲Vulkan規範解釋了這兩者。所以目前還不清楚你感到困惑。 –

回答

1

您將需要將您複製數據的緩衝區的內存映射到並從void*中提取數據。你有分配內存到緩衝區。您要使用的內存必須是主機可見的。

如果用於緩衝區的內存堆不一致,那麼在柵欄被觸發之後以及開始複製數據之前,您需要使用vkInvalidateMappedMemoryRanges作爲映射範圍。

相關問題