获取显卡型号?

发布于 2024-07-26 11:00:20 字数 55 浏览 4 评论 0原文

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

I was wondering how I can get the graphics card model/brand from code particularly from DirectX 9.0c (from within C++ code).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

笑叹一世浮沉 2024-08-02 11:00:21

DirectX 中最简单的方法是通过 IDirect3D9::GetAdapterIdentifier

只需创建一个 D3DADAPTER_IDENTIFIER9 对象,将指向它的指针传递给 GetAdapterIdentifier。 DirectX 将显卡描述作为字符串填写在“描述”字段中。 它还包括有关该卡的显示设备以及您拥有的驱动程序版本的信息。

您会得到类似这样的信息:

  • 描述:“NVIDIA GeForce GTX 570”
  • 设备:“\.\DISPLAY1”
  • 驱动程序:
    “nvd3dum.dll”

The easiest way in DirectX is through IDirect3D9::GetAdapterIdentifier.

Just create a D3DADAPTER_IDENTIFIER9 object, pass a pointer to it to GetAdapterIdentifier. DirectX fills out the graphics card description as a string in the Description field. It also includes information on which display device the card is, and what driver version you have.

You get something like this:

  • Description: "NVIDIA GeForce GTX 570"
  • Device: "\.\DISPLAY1"
  • Driver:
    "nvd3dum.dll"
人事已非 2024-08-02 11:00:21

在运行时,您可以查询设备型号和供应商:

  • 在 OpenGL 中,使用命令 glGetString(GL_VENDOR) 或 GL_RENDERER 或 GL_VERSION 来获取您想要的信息。

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

At runtime, you can query the device model and vendor:

  • In OpenGL, use the command glGetString(GL_VENDOR) or GL_RENDERER or GL_VERSION to get the information you're after.

  • In DirectX 9, it appears the info is in the Microsoft config system, and is queried from the device database. It's section 3 of this document, which also has example code: http://msdn.microsoft.com/en-us/library/bb204848(VS.85).aspx
    Using the same system you can get such information as the amount of ram the video card has, the driver number, etc.

烟雨凡馨 2024-08-02 11:00:21

看看我书中的第 2 章 Direct3D Direct3D 图形管道。 请参阅第 2.12 节“识别特定设备”。

Take a look at Chapter 2. Direct3D from my book The Direct3D Graphics Pipeline. See section 2.12, Identifying a Particular Device.

失去的东西太少 2024-08-02 11:00:21

您可以使用“DirecX Diagnostic Tool”API,例如 DX SDK 中的示例 DxDiagOutput
http://msdn.microsoft.com/en -us/library/ee416986%28v=VS.85%29.aspx

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

尤怨 2024-08-02 11:00:21
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)

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]));
}

Then get the description of adapters (adapters->Description)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文