【发布时间】:2013-09-27 20:30:59
【问题描述】:
我一直在阅读有关 Direct3D11 的大量信息(包括这里关于堆栈溢出的内容!),在我的所有研究中,我都无法最终回答这个问题:
当创建资源对象(即缓冲区或纹理对象)时,例如使用 pDevice->CreateBuffer(),它存储在哪里?在系统 RAM 上还是在 GPU 的 Video-RAM 上?还是我完全误解了 Resource 对象的基本性质?
显然,无论您使用什么数据填充资源(例如顶点和索引数组)都存储在您(程序员)放置它的任何位置,但是一旦您将这些数据映射到资源,它会复制到哪里? (我假设,由于必须映射和取消映射资源以进行读/写保护,因此映射的数据实际上被复制了,可能复制到了 VRAM)。另外,Resource对象本身实例化在哪里?
提前感谢您的任何帮助!
【问题讨论】:
-
你不知道也找不到的事实是DirectX的核心。这允许它执行诸如使用软件渲染器而不是 GPU 并处理没有足够内存的视频卡之类的事情。你不想想知道这个问题的答案。抽象实现细节是任何好的 api 的核心。
-
这是一个很好的观点,在使用 DirectX 或任何其他 API 时,我一定会牢记这一点。谢谢!当然,这个问题既是一个纯粹的学术问题,也是一个实际问题:)
标签: c++ memory direct3d direct3d11