获取显卡型号?

12
我想知道如何从代码中获取显卡型号/品牌,特别是在DirectX 9.0c中(从C++代码中)获取。
5个回答

11

在DirectX中最简单的方法是通过IDirect3D9::GetAdapterIdentifier函数。

只需创建一个D3DADAPTER_IDENTIFIER9对象,将指向它的指针传递给GetAdapterIdentifier函数。DirectX会将图形卡的描述填写在Description字段中,以字符串的形式呈现。它还包括有关哪个显示设备使用卡以及驱动程序版本的信息。

您将获得以下类似的内容:

  • Description: "NVIDIA GeForce GTX 570"
  • Device: "\.\DISPLAY1"
  • Driver:"nvd3dum.dll"

谢谢提供所需的信息,非常有用。不确定为什么这不是被接受的答案。 - Jeremy Trifilo
因为现在已经是三年后了。 :) - Decker

7

运行时,您可以查询设备的型号和制造商:

  • 在OpenGL中,使用命令glGetString(GL_VENDOR)或GL_RENDERER或GL_VERSION获取所需信息。

  • 在DirectX 9中,该信息似乎在Microsoft配置系统中,并且从设备数据库中查询。这是本文档的第3节,其中还包括示例代码:http://msdn.microsoft.com/en-us/library/bb204848(VS.85).aspx使用相同的系统,您可以获得诸如视频卡的RAM量、驱动程序编号等信息。


2

0
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)


这里不需要D3DPRESENT_PARAMETERS。它用于在D3D9中创建设备。适配器信息可以在没有它的情况下获得。 - IGR94

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接