有没有类似于glxinfo的Direct 3D等效工具?

4

在尝试打开D3D窗口之前,我需要确保我的计算机能够创建它。我该如何做到这一点?


你使用的是哪个版本的DirectX? - Joshua Rodgers
4个回答

4

我已经找到了与glxinfo相当的DirectX工具,它叫做dxdiag,由微软提供。该工具可以输出一个XML文件,并包含一个D3dStatus字段(在我的情况下显示为“不可用”)。


3
您可能需要查看DeviceCaps。它应该能够告诉您设备的功能,以便您不会尝试创建它不支持的窗口。请参考此链接

3

实际上,glxinfo会创建一个OpenGL窗口和OpenGL上下文,但从不将其映射到屏幕。必须创建一个OpenGL上下文才能获取所有信息,就像glxinfo所做的那样。


很好的评论,但没有回答关于D3D的问题。 - Matthew Read
@MatthewRead:OP询问如何在不创建上下文的情况下获取GPU信息。他认为glxinfo可以在不创建窗口的情况下收集信息。我回答说,实际上glxinfo会执行通常的操作。我认为很容易想到采用同样的逻辑步骤来使用Direct3D;尝试创建一个Direct3D窗口/上下文以查看机器实际上能做什么。 - datenwolf

0
如果您使用Direct3D11,您可以使用以下代码。
// Determines feature level without creating a device.
D3D_FEATURE_LEVEL determineHighestSupportedFeatureLevel()
{
    HRESULT hr = E_FAIL;
    D3D_FEATURE_LEVEL FeatureLevel;

    hr = D3D11CreateDevice(
        nullptr, 
        D3D_DRIVER_TYPE_HARDWARE, 
        nullptr, 
        0, 
        nullptr, 
        0,
        D3D11_SDK_VERSION, 
        nullptr, 
        &FeatureLevel, 
        nullptr );

    if(FAILED(hr))
    {
        throw std::runtime_exception("Determine the highest supported Direct3D11 feature level failed.");
    }

    return FeatureLevel;
}

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