是否有与 glxinfo 等效的 Direct 3D?

发布于 2024-12-13 09:58:32 字数 46 浏览 0 评论 0原文

我需要确保我的机器可以在尝试打开 D3D 窗口之前创建它。我怎样才能这样做呢?

I need to make sure my machine can create a D3D window before even trying to open it. How can I do so?

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

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

发布评论

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

评论(4

巷子口的你 2024-12-20 09:58:32

我找到了 directX 的 glxinfo 的等效项 - 它称为 dxdiag 由 Microsoft 提供。这可以让您输出一个带有 D3dStatus 字段的 xml 文件(在我的例子中显示“不可用”)。

I've found the equivalent of glxinfo for directX -- it's called dxdiag and is provided by Microsoft. This lets you output an xml file with a D3dStatus field (which says "not available" in my case).

无人接听 2024-12-20 09:58:32

You probably want to take a look at DeviceCaps. It should be able to tell you the capabilities of the device so that you don't try to create a window that it doesn't support.

心头的小情儿 2024-12-20 09:58:32

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

Actually glxinfo does create a OpenGL window and creates a OpenGL context, but never maps it to the screen. One must create a OpenGL context to get all the information, like glxinfo does.

带上头具痛哭 2024-12-20 09:58:32

如果您使用 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;
}

If you use Direct3D11 you can use this code

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