IDXGI 和 ID3D11Device 和 ID3D11DeviceContext 之间的用法差异

Difference in usage among IDXGI and ID3D11Device and ID3D11DeviceContext

本文关键字:用法 之间 ID3D11Device ID3D11DeviceContext IDXGI      更新时间:2023-10-16

IDXGI和ID3D11DeviceContext之间的用法有什么区别?

据我了解,创建/初始化COM对象使用ID3D11Device,在操作这些COM对象时使用ID3D11DeviceContext,用于确定硬件类型,驱动程序和所有其他兼容性内容使用IDXGI COM。

还有哪些其他区别和用法?

DXGI是用于枚举适配器和输出,创建交换链以及执行帧呈现的基本基础结构。它旨在独立于DirectX的特定版本,并且它应该不会在版本之间发生太大变化。

回到 Direct3D 10.x,这些方法主要在一个ID3D10Device中。对于 Direct3D 11,这分为两部分:

  • ID3D11Device就是创建纹理、顶点缓冲区、着色器等对象。
  • ID3D11DeviceContext用于设置状态和绘图。

拆分的原因很简单:ID3D11Device上的所有方法都是线程安全的(即可以从多个线程调用并在内部使用锁定),而ID3D11DeviceContext上的所有方法都是无线程的(即一次只能从单个线程调用,因为这些方法不使用锁定)。

您应该查看 2010 年的演示文稿:DirectX 11 技术更新。