【问题标题】:DirectX 11 Buffer LocationDirectX 11 缓冲区位置
【发布时间】:2013-12-13 09:47:53
【问题描述】:

在 DirectX 中,当您想要创建 VertexBuffer、IndexBuffer 或 ConstantBuffer 时,您依赖于 ID3D11Buffer interface 和 ID3D11Device::CreateBuffer。

我想知道这个缓冲区是在哪里创建的?

是在系统内存还是显存中。

当您使用ID3D11DeviceContext::IASetVertexBuffers 设置顶点缓冲区以及IndexBuffer 和ConstantBuffer 的相应方法时,究竟会发生什么。

【问题讨论】:

    标签: c++ windows directx directx-11


    【解决方案1】:

    From the documentation:

    在 Direct3D 10/11 中,应用程序不再指定在哪种类型的内存(池)中创建资源。相反,您指定资源的预期用途,并让运行时(与驱动程序和内存管理器)选择将实现最佳性能的内存类型。

    无法保证缓冲区等资源的存储位置。 您可以“控制”创建资源的唯一方法是为它们选择正确的D3D11_USAGE。 D3D11_USAGE_DEFAULT 和 D3D11_USAGE_IMMUTABLE 资源可能最终会在 VRAM、D3D11_USAGE_DYNAMIC 和 D3D11_USAGE_STAGING 中的某个内存区域中,CPU 和 GPU 都可以访问。

    只要确保您根据他们的需要为您的资源选择最快的使用方式 D3D11_USAGE_IMMUTABLE > D3D11_USAGE_DEFAULT > D3D11_USAGE_DYNAMIC > D3D11_USAGE_STAGING

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 2015-08-23
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多