DirectX缓冲区位置

时间:2013-12-13 09:47:54

标签: c++ windows directx directx-11

在DirectX中,如果要创建VertexBuffer,IndexBuffer或ConstantBuffer,则依赖于ID3D11Buffer interfaceID3D11Device::CreateBuffer

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

是在系统内存还是视频内存中。

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

1 个答案:

答案 0 :(得分:3)

From the documentation

  

在Direct3D 10/11中,应用程序不再指定要在其中创建资源的内存类型(池)。而是指定资源的预期用途,并让运行时(与驱动程序一致)内存管理器)选择能达到最佳性能的内存类型。

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

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