首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Direct3D11在哪里分配资源对象?

Direct3D11在哪里分配资源对象?
EN

Stack Overflow用户
提问于 2013-09-27 20:30:59
回答 1查看 133关注 0票数 0

我读了很多关于Direct3D11的文章(包括这里的堆栈溢出!)在我所有的研究中,我一直未能确切地回答这个问题:

当创建一个Resource对象(即缓冲区或纹理对象)时,例如使用pDevice->CreateBuffer(),它存储在哪里?在系统RAM上还是在GPU的视频内存上?还是我完全误解了资源对象的本质?

显然,无论您用什么数据填充资源(例如顶点和索引数组),都存储在您--程序员--放置的任何地方,但是一旦您将该数据映射到资源,它在哪里复制呢?(我假设,由于资源必须映射和取消映射以保护读/写,因此映射的数据实际上是复制到VRAM中的)。此外,资源对象本身在哪里实例化?

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-27 21:15:12

在资源创建期间,您的Create*调用经过D3D运行时、UMD (用户模式图形驱动程序)和KMD (内核模式)。KMD负责页面表管理(在共享虚拟内存的情况下,它可以与操作系统对话,但让我们忽略这一点)。如果您的资源不使用支持向量机,那么它将被裁剪到图形内存中。

处理器图形的图形内存(如Intel Iris)是您的系统RAM。因此,它实际上只是从应用程序虚拟地址空间复制到KMD。

对于离散显卡,数据驻留在您的卡的视频RAM中。该GPU只能与数据,它的视频RAM工作。(我不确定共享虚拟内存是如何用于离散图形的)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19059579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档