如何查找支持的 Direct3D 功能级别

鲍勃·克劳斯

我想找出我的 C# UWP 程序支持哪些 Direct 3D 功能级别(此处显示)。

注意:我这样做是为了研究我的问题的可能答案,我怎么知道,在代码中,如果 RadialGradientBrush 没有正确显示?

在 C++ 中,对D3D11CreateDevice的调用可能很有用,但似乎没有 C# 等效项。

或者,更好的是ID3D11Device,它有一个GetFeatureLevel()调用。同样,这些是 C++ 项。

鲍勃·克劳斯

我想出了这个:

C++ DLL:

#include "pch.h"
#include <wrl.h>
#include <d3d11_2.h> 
#include "BKGraphicsDLL.h"

using Microsoft::WRL::ComPtr;

extern "C"
{
    __declspec(dllexport) D3D_FEATURE_LEVEL GetGraphicsFeatureLevel()
    {
        HRESULT hr = E_FAIL;
        D3D_FEATURE_LEVEL MaxSupportedFeatureLevel = D3D_FEATURE_LEVEL_9_1;
        D3D_FEATURE_LEVEL FeatureLevels[] = {
            D3D_FEATURE_LEVEL_11_1,
            D3D_FEATURE_LEVEL_11_0,
            D3D_FEATURE_LEVEL_10_1,
            D3D_FEATURE_LEVEL_10_0,
            D3D_FEATURE_LEVEL_9_3,
            D3D_FEATURE_LEVEL_9_2,
            D3D_FEATURE_LEVEL_9_1
        };

        hr = D3D11CreateDevice(
            NULL,
            D3D_DRIVER_TYPE_HARDWARE,
            NULL,
            0,
            FeatureLevels,
            ARRAYSIZE(FeatureLevels),
            D3D11_SDK_VERSION,
            NULL,
            &MaxSupportedFeatureLevel,
            NULL
        );

        return MaxSupportedFeatureLevel;
    }
}

一个枚举和一个 NativeMethods 类来访问我的 MainPage C# 中的 DLL:

    public enum D3DFeatureLevel
    {
        D3D_FEATURE_LEVEL_9_1 = 0x9100,
        D3D_FEATURE_LEVEL_9_2 = 0x9200,
        D3D_FEATURE_LEVEL_9_3 = 0x9300,
        D3D_FEATURE_LEVEL_10_0 = 0xa000,
        D3D_FEATURE_LEVEL_10_1 = 0xa100,
        D3D_FEATURE_LEVEL_11_0 = 0xb000,
        D3D_FEATURE_LEVEL_11_1 = 0xb100,
        D3D_FEATURE_LEVEL_12_0 = 0xc000,
        D3D_FEATURE_LEVEL_12_1 = 0xc100
    };


    // used to get Graphics capabilities
    internal static class NativeMethods
    {
        [DllImport("BKGraphicsDLL.dll", ExactSpelling = true)]
        public static extern D3DFeatureLevel GetGraphicsFeatureLevel();

    }

无论我需要在代码中的何处设置功能级别,都使用以下行:

    D3DFeatureLevel maxFeatureLevel = NativeMethods.GetGraphicsFeatureLevel();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何返回功能级别?

来自分类Dev

D3D功能级别问题

来自分类Dev

如何使用Cucumber编写功能级别的验收测试?

来自分类Dev

Tensorflow 2.0:如何在功能级别实现融合网络?

来自分类Dev

Direct3D 9.0返回到固定功能管道

来自分类Dev

Oracle Virtual Box如何启用Direct3D

来自分类Dev

Specflow功能级别模板

来自分类Dev

Windows 10移动版(电话)是否支持Direct3D 12?

来自分类Dev

DirectX API级别与功能级别

来自分类Dev

如何在Direct3D 11中从CPU访问帧缓冲区?

来自分类Dev

如何在Direct3D 11中实现“渲染到纹理”管道?

来自分类Dev

C ++和Direct3D 9-如何绘制带格式的文本?(例如printf等)

来自分类Dev

如何在Windows 8上禁用DirectDraw和Direct3D加速?

来自分类Dev

如何在Direct3D 11中启用深度测试?

来自分类Dev

如何在Direct3D 11中从CPU访问帧缓冲区?

来自分类Dev

当前着色器后端不支持在此GPU上支持wine Direct3D 10

来自分类Dev

如何将Direct3D 11覆盖层与WPF Viewport3D同步?

来自分类Dev

达到最大嵌套功能级别

来自分类Dev

如何使用包裹在ComPtr中的Direct3D 11指针来获取11.1接口?

来自分类Dev

如何在Windows 8中为32位应用程序启用Direct3D加速?

来自分类Dev

功能级别范围和块级别范围之间的区别

来自分类Dev

“尽管它支持 DirectX 11,但功能级别仅为 10_0,这对于许多 DirectX 11 和 DirectX 12 游戏来说可能会出现问题”

来自分类Dev

tsc:1:达到最大嵌套功能级别;增加功能?

来自分类Dev

colorssh:7:达到最大嵌套功能级别;增加功能?

来自分类Dev

Direct3D 查找 2D 屏幕坐标有效,但在压力时会出现镜像故障

来自分类Dev

具有功能级别更改的Clearcase文件搜索

来自分类Dev

递归的功能级别范围的更清晰的解释

来自分类Dev

指定外部库,但不在功能级别

来自分类Dev

升级域功能级别有什么好处?

Related 相关文章

  1. 1

    如何返回功能级别?

  2. 2

    D3D功能级别问题

  3. 3

    如何使用Cucumber编写功能级别的验收测试?

  4. 4

    Tensorflow 2.0:如何在功能级别实现融合网络?

  5. 5

    Direct3D 9.0返回到固定功能管道

  6. 6

    Oracle Virtual Box如何启用Direct3D

  7. 7

    Specflow功能级别模板

  8. 8

    Windows 10移动版(电话)是否支持Direct3D 12?

  9. 9

    DirectX API级别与功能级别

  10. 10

    如何在Direct3D 11中从CPU访问帧缓冲区?

  11. 11

    如何在Direct3D 11中实现“渲染到纹理”管道?

  12. 12

    C ++和Direct3D 9-如何绘制带格式的文本?(例如printf等)

  13. 13

    如何在Windows 8上禁用DirectDraw和Direct3D加速?

  14. 14

    如何在Direct3D 11中启用深度测试?

  15. 15

    如何在Direct3D 11中从CPU访问帧缓冲区?

  16. 16

    当前着色器后端不支持在此GPU上支持wine Direct3D 10

  17. 17

    如何将Direct3D 11覆盖层与WPF Viewport3D同步?

  18. 18

    达到最大嵌套功能级别

  19. 19

    如何使用包裹在ComPtr中的Direct3D 11指针来获取11.1接口?

  20. 20

    如何在Windows 8中为32位应用程序启用Direct3D加速?

  21. 21

    功能级别范围和块级别范围之间的区别

  22. 22

    “尽管它支持 DirectX 11,但功能级别仅为 10_0,这对于许多 DirectX 11 和 DirectX 12 游戏来说可能会出现问题”

  23. 23

    tsc:1:达到最大嵌套功能级别;增加功能?

  24. 24

    colorssh:7:达到最大嵌套功能级别;增加功能?

  25. 25

    Direct3D 查找 2D 屏幕坐标有效,但在压力时会出现镜像故障

  26. 26

    具有功能级别更改的Clearcase文件搜索

  27. 27

    递归的功能级别范围的更清晰的解释

  28. 28

    指定外部库,但不在功能级别

  29. 29

    升级域功能级别有什么好处?

热门标签

归档