为什么映射内存后要取消映射?这个地址不是我们保存着数据吗?
void* data;
vkMapMemory(device, stagingBufferMemory, 0, imageSize, 0, &data);
memcpy(data, pixels, static_cast<size_t>(imageSize));
vkUnmapMemory(device, stagingBufferMemory);
Vulkan 文档中的示例代码
对于cg初学者来说这个“孩子气”的问题很抱歉。需要澄清一下。
来自 vulkan 文档的示例代码
这是这里的关键要素:他们给了你一个完整的例子——映射内存,复制数据,取消映射内存。
请记住,映射内存将消耗进程上的虚拟地址空间。在 64 位世界中这可能不是什么大问题,但是...
对于现实生活中的应用程序,由应用程序开发人员决定是否要保留映射(因为他们想再次使用它)。