我想知道如何从代码中获取显卡型号/品牌,特别是从 DirectX 9.0c(从 C++ 代码中)。
5 回答
DirectX 中最简单的方法是通过IDirect3D9::GetAdapterIdentifier。
只需创建一个D3DADAPTER_IDENTIFIER9对象,将指向它的指针传递给 GetAdapterIdentifier。DirectX 将图形卡描述作为字符串填写在描述字段中。它还包括有关该卡是哪种显示设备以及您拥有的驱动程序版本的信息。
你会得到这样的东西:
- 描述:“NVIDIA GeForce GTX 570”
- 设备:“\.\DISPLAY1”
- 驱动程序:“nvd3dum.dll”
在运行时,您可以查询设备型号和供应商:
在 OpenGL 中,使用命令 glGetString(GL_VENDOR) 或 GL_RENDERER 或 GL_VERSION 来获取您需要的信息。
在 DirectX 9 中,信息似乎在 Microsoft 配置系统中,并且是从设备数据库中查询的。这是本文档的第 3 部分,其中也有示例代码: http: //msdn.microsoft.com/en-us/library/bb204848 (VS.85).aspx 使用相同的系统,您可以获得诸如数量等信息ram显卡有,驱动程序号等。
看看我的书The Direct3D Graphics Pipeline中的第 2 章 Direct3D。请参阅第 2.12 节,识别特定设备。
You can use "DirecX Diagnostic Tool" API, like in sample DxDiagOutput from DX SDK http://msdn.microsoft.com/en-us/library/ee416986%28v=VS.85%29.aspx
IDirect3D9* d3dobject = Direct3DCreate9(D3D_SDK_VERSION);
D3DPRESENT_PARAMETERS d3dpresent;
memset(&d3dpresent, 0, sizeof(D3DPRESENT_PARAMETERS));
d3dpresent.Windowed = TRUE;
d3dpresent.SwapEffect = D3DSWAPEFFECT_DISCARD;
UINT adaptercount = d3dobject->GetAdapterCount();
D3DADAPTER_IDENTIFIER9* adapters = (D3DADAPTER_IDENTIFIER9*)malloc(sizeof(D3DADAPTER_IDENTIFIER9) * adaptercount);
for (int i = 0; i < adaptercount; i++)
{
d3dobject->GetAdapterIdentifier(i, 0, &(adapters[i]));
}
然后得到适配器的描述(adapters->Description)