IDXGI与ID3D11Device和ID3D11DeviceContext的用法区别
Difference in usage among IDXGI and ID3D11Device and ID3D11DeviceContext
IDXGI与ID3D11Device和ID3D11DeviceContext在使用上有什么区别?
据我了解,对于 creating/initializing COM 对象使用 ID3D11Device,并且在操作这些 COM 对象时使用 ID3D11DeviceContext 并确定硬件类型、驱动程序和所有其他兼容性内容使用 IDXGI COM。
还有哪些区别和用法?
DXGI 是用于枚举适配器和输出、创建交换链和执行框架呈现的基本基础设施。它旨在独立于特定版本的 DirectX,并且它应该不会在版本之间发生太大变化。
回到 Direct3D 10.x,这些方法主要在一个 ID3D10Device
中。对于 Direct3D 11,这被分成两部分:
ID3D11Device
都是关于创建对象,例如纹理、顶点缓冲区、着色器等。
ID3D11DeviceContext
用于设置状态和绘制。
拆分的原因很简单:ID3D11Device
上的所有方法都是线程安全的(即可以从多个线程调用并在内部使用锁定),而ID3D11DeviceContext
上的所有方法都是无线程(即一次只能从一个线程调用,因为这些方法不使用锁定)。
你应该看看 2010 年的这个演示文稿:DirectX 11 Technology Update。
IDXGI与ID3D11Device和ID3D11DeviceContext在使用上有什么区别?
据我了解,对于 creating/initializing COM 对象使用 ID3D11Device,并且在操作这些 COM 对象时使用 ID3D11DeviceContext 并确定硬件类型、驱动程序和所有其他兼容性内容使用 IDXGI COM。
还有哪些区别和用法?
DXGI 是用于枚举适配器和输出、创建交换链和执行框架呈现的基本基础设施。它旨在独立于特定版本的 DirectX,并且它应该不会在版本之间发生太大变化。
回到 Direct3D 10.x,这些方法主要在一个 ID3D10Device
中。对于 Direct3D 11,这被分成两部分:
ID3D11Device
都是关于创建对象,例如纹理、顶点缓冲区、着色器等。ID3D11DeviceContext
用于设置状态和绘制。
拆分的原因很简单:ID3D11Device
上的所有方法都是线程安全的(即可以从多个线程调用并在内部使用锁定),而ID3D11DeviceContext
上的所有方法都是无线程(即一次只能从一个线程调用,因为这些方法不使用锁定)。
你应该看看 2010 年的这个演示文稿:DirectX 11 Technology Update。