Direct3D和DXGI之间的区别



我正试图使用C++查询一台Windows机器,以获取可用图形卡的列表。

这个SO问题有一个答案(来自moxize(,它提供了一种方式(d3d9.h(:获取图形卡型号

这个提供了另一个(dxgi.h(:dxgi枚举适配器

当我尝试每种卡时,我发现上面的dxgi方法列出了所有卡,而d3d9方法似乎只提供其中一个,这取决于NVIDIA控制面板中"首选图形处理器"的选择。

我很难理解以上每一条程序路线提供的内容和目的之间的区别?

DirectX图形基础结构(DXGI(是在Vista中引入的。它基本上考虑了Direct3D的所有枚举、显示和适配器管理以及演示内容。这样,所有类型的图形API都可以共存,而不需要在每个图形API中为这些常见任务提供单独的机制。例如,它允许所有Direct3D API(>=10(只关心将3D内容绘制到缓冲区中,而不关心这些缓冲区来自哪里,或者它们是否以及如何显示。

旧的Direct3D 9 API仍然有自己的接口用于适配器枚举。如果我没记错的话,Direct3D9过去只枚举实际连接了显示器的适配器。很可能是因为API并不真正支持无头渲染,所以尝试使用没有输出的适配器是没有意义的。另一方面,DXGI在您的机器上操作整个视频和呈现网络的更完整的图片。最重要的是,它区分了适配器(图形卡(和输出(连接到适配器的显示器(。我假设你在笔记本电脑或其他带有集成GPU和专用GPU的机器上运行!?切换驱动器控制面板中的"首选图形处理器"很可能会改变两个GPU中哪一个(逻辑上(连接到显示器。然后Direct3D9将始终只枚举那一个…

最新更新