我对Direct3D11(这里包括堆栈溢出!)一直在阅读了很多,在我所有的研究,我一直无法确凿地回答这个问题:Direct3D11在哪里分配资源对象?
当资源对象(即缓冲区或者一个Texture对象),例如用pDevice-> CreateBuffer()创建,它存储在哪里?在系统RAM上还是在GPU的视频RAM上?还是我完全误解了Resource对象的基本性质?
很显然,无论您将何处填充资源(比如顶点和索引数组)都存储在哪里 - 程序员 - 将其放置在其中,但是一旦将该数据映射到资源的复制位置? (我假设,因为资源必须被映射并且未被映射以用于读/写保护,所以映射的数据实际上被复制,可能被复制到VRAM)。而且,Resource对象本身在哪里实例化?
在此先感谢您的帮助!
事实上,你不知道也找不到是DirectX的核心。这使得它可以像使用软件渲染器而不是GPU来处理事情,例如处理没有足够内存的视频卡。你不想*知道这个问题的答案。抽象实现细节是任何好的API的核心。 –
这是一个很好的观点,在使用DirectX或任何其他API时,我一定会牢记这一点。谢谢!当然,这个问题与纯粹的学术问题一样,当然是:) –