为什么我们在复制到内存后立即取消映射内存

问题描述 投票:0回答:1

为什么映射内存后要取消映射?这个地址不是我们保存着数据吗?

void* data;
vkMapMemory(device, stagingBufferMemory, 0, imageSize, 0, &data);
memcpy(data, pixels, static_cast<size_t>(imageSize));
vkUnmapMemory(device, stagingBufferMemory);

Vulkan 文档中的示例代码

对于cg初学者来说这个“孩子气”的问题很抱歉。需要澄清一下。

c++ memory-management dynamic-memory-allocation vulkan texture-mapping
1个回答
0
投票

来自 vulkan 文档的示例代码

这是这里的关键要素:他们给了你一个完整的例子——映射内存,复制数据,取消映射内存。

请记住,映射内存将消耗进程上的虚拟地址空间。在 64 位世界中这可能不是什么大问题,但是...

对于现实生活中的应用程序,由应用程序开发人员决定是否要保留映射(因为他们想再次使用它)。

© www.soinside.com 2019 - 2024. All rights reserved.