在开发手机游戏时,关于 CPU 和 GPU 共享内存的说法。下面我将详细解答并分析纹理虚拟内存的完整流程。
问题1:主存和显存是否共享一份贴图虚拟内存?
在大多数现代图形架构中,CPU 和 GPU 的内存并不是完全共享的。具体来说:
- 主存(RAM):这是 CPU 使用的内存,通常用于存储程序数据、纹理、模型等。
- 显存(VRAM):这是 GPU 使用的专用内存,主要用于存储图形数据,如纹理、帧缓冲区等。
在许多情况下,CPU 和 GPU 之间的数据传输需要通过显存来完成。虽然在某些架构(如某些移动设备或集成显卡)中,CPU 和 GPU 可能共享同一块物理内存(例如,使用统一内存架构),但在大多数情况下,纹理数据在 CPU 和 GPU 之间的访问是通过显存进行的。
问题2:纹理虚拟内存的完整流程
2.1 直接调用图形API传递主存指针?
在大多数情况下,Unity 或其他图形引擎不会直接将主存中的纹理数据的指针传递给 GPU。原因如下: