我正在使用 C++处理DXGI和DirectX 11 。目前我正在尝试使用 IDXGIFactory。经过一些研究和阅读文档后,我注意到有不同的版本。
IDXGIFactory IDXGIFactory1 IDXGIFactory2 IDXGIFactory3 IDXGIFactory4 IDXGIFactory5
但我也注意到,只有前 3 个 IDXGIFactory 版本可以创建这样的实例,而后 3 个则没有。
CreateDXGIFactory CreateDXGIFactory1 CreateDXGIFactory2
没有 CreateDXGIFactory3、CreateDXGIFactory4 或 CreateDXGIFactory5。
所以我的问题是如何创建一个 IDXGIFactory5 实例?
此外,我想知道我是否不能自己实例化 IDXGIFactory5 的实例,如何强制 D3D11CreateDevice 在内部创建和使用 IDXGIFactory5,以便从生成的 ID3D11Device 中检索引用?
编辑:
好的,现在我了解了不同的 CreateDXGIFactory 函数以及如何创建 IDXGIFactory5 实例。但是在理解了这一点之后,我遇到了下一个问题。IDXGIAdapter2的文档说我应该使用 IDXGIFactory1::EnumAdapters1 来查询实例。但是查看函数签名我只得到一个 IDXGIAdapter1。
HRESULT EnumAdapters1(
UINT Adapter,
[out] IDXGIAdapter1 **ppAdapter
);
如何枚举 IDXGIAdapter2 实例?