【发布时间】:2014-10-17 02:20:59
【问题描述】:
我研究 Directx 11 已经有一段时间了,但我仍然对 Directx 11 如何管理内存感到困惑。例如,如果我使用 ID3D11Device::CreateBuffer 创建一个顶点缓冲区,那么新缓冲区存储在哪里?我知道它返回一个指向缓冲区的指针,这意味着它必须存储在 CPU RAM 上,对吗?但是,我认为这会使 ID3D11DeviceContext::IASetVertexBuffers 成为一个非常缓慢的过程,因为它必须将缓冲区从 CPU RAM 复制到 GPU RAM。但是,如果使用 ID3D11Device:CreateBuffer 创建的所有缓冲区都存储在 GPU RAM 上,那么 GPU RAM 不会很快填满吗?基本上我想知道:当我创建一个缓冲区时,该数据存储在哪里?在 CPU RAM 或 GPU RAM 中?另外,ID3D11DeviceContext::IASetVertexBuffers 对缓冲区做了什么(复制/设置?)。
【问题讨论】:
标签: c++ memory directx-11