Direct3D和DXGI之间的区别
Difference between Direct3D and 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将始终只枚举那一个…
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- 我想知道长双倍和双倍之间的区别
- 这 4 个 lambda 表达式之间有什么区别?
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- (double) 和 double() 之间的区别
- & 和 * 之间的区别
- std::is_convertible 和 std::convertible_to 之间的区别(在实践中)?
- 析构函数和'delete'之间的区别
- 在 typedef 内部使用 const 关键字和在 typedef 外部使用 const 关键字之间有区别吗?
- 从预序遍历构造 bst 的 c++ 和 python 解决方案之间的区别
- vector.back() 和 vector[vector.size() - 1] 之间的区别?
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- OpenMP #pragma omp for v/s #pragma omp parallel for 之间的区别?
- S() 与 S{} 之间的区别?