【问题标题】:Get the graphics card model?获取显卡型号?
【发布时间】:2009-07-07 03:38:38
【问题描述】:

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

【问题讨论】:

    标签: c++ graphics model directx intel


    【解决方案1】:

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

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

    你会得到这样的东西:

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

    【讨论】:

    • 谢谢我得到了我需要的信息,非常有用,不知道为什么这不是被接受的答案。
    • ... 因为已经过了三年。 :)
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      看看我的书The Direct3D Graphics Pipeline中的Chapter 2. Direct3D。请参阅第 2.12 节,识别特定设备。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:
          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 中创建设备。没有它,适配器信息可用。
          猜你喜欢
          • 2017-07-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-25
          • 1970-01-01
          • 1970-01-01
          • 2018-10-18
          • 2013-08-14
          相关资源
          最近更新 更多