- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 C++ 初始化 Direct3D11。在安装了 Visual Studio 的机器上(所有这些都在 Windows 10 上运行),它运行良好。在其他计算机(未安装 Visual Studio、Windows 10 和 7)上,它返回 E_INVALIDARG。
标记 P_FeatureLevelsSupported 在这些计算机上显示为 0。我的显示为 D3D_FEATURE_LEVEL_11_1。所以我猜它与 DirectX 安装有关,或者可能是因为缺少 SDK(但这不会很奇怪吗?:D)
通过运行 dxdiag,我知道那些机器支持 DirectX11_0。
我需要安装什么吗?该软件必须在我们客户的 PC 上运行。
导致错误的代码:
const D3D_FEATURE_LEVEL lvl[] = { 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,
};
D3D_FEATURE_LEVEL P_FeatureLevelsSupported;
//see microsoft documentation, we use 11_1 or 11_0 if 11_1 is not supported by the client machine
//https://learn.microsoft.com/en-us/windows/desktop/direct3d11/overviews-direct3d-11-devices-initialize
result = D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, D3D11_CREATE_DEVICE_DEBUG, lvl, _countof(lvl), D3D11_SDK_VERSION, &swapChainDesc, &swapChain, &device, &P_FeatureLevelsSupported, &deviceContext);
if(result == E_INVALIDARG) //check with FEATURE_LEVEL_11_0
D3D11CreateDeviceAndSwapChain(NULL,
D3D_DRIVER_TYPE_HARDWARE,
NULL,
D3D11_CREATE_DEVICE_DEBUG,
&lvl[1],
_countof(lvl) - 1,
D3D11_SDK_VERSION,
&swapChainDesc,
&swapChain,
&device,
&P_FeatureLevelsSupported,
&deviceContext);
提前致谢:)
最佳答案
您要求通过传入 D3D11_CREATE_DEVICE_DEBUG
创建调试设备。要成功,您必须安装 D3D11*SDKLayers.dll,您的开发机器上可能已经安装了它。参见 here详细信息包括:
Debug Layer The debug layer provides extensive additional parameter and consistency validation (such as validating shader linkage and resource binding, validating parameter consistency, and reporting error descriptions).
To create a device that supports the debug layer, you must install the DirectX SDK (to get D3D11SDKLayers.dll), and then specify the D3D11_CREATE_DEVICE_DEBUG flag when calling the D3D11CreateDevice function or the D3D11CreateDeviceAndSwapChain function. If you run your application with the debug layer enabled, the application will be substantially slower. But, to ensure that your application is clean of errors and warnings before you ship it, use the debug layer. For more info, see Using the debug layer to debug apps.
Note
For Windows 8, to create a device that supports the debug layer, install the Windows Software Development Kit (SDK) for Windows 8 to get D3D11_1SDKLayers.dll.
如果您在客户机器上不需要调试设备,只需删除该标志即可。
关于c++ - DirectX - CreateDeviceAndSwapChain 返回 E_INVALIDARG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53208725/
我正在调查一个 E_INVALIDARG 异常,当我尝试创建第二个常量缓冲区来存储我的灯光信息时抛出该异常: // create matrix stack early CD3D11_B
在 Directx 12 中创建管道状态对象失败并显示 E_INVALIDARG 并且调试层输出一堆废话说 D3D12_GRAPHICS_PIPELINE_STATE_DESC 实例中的数据无效: D
我在这里尝试做的只是创建一个接口(interface)的实例。真的应该这么简单。一直在关注任何在线资料,阅读我能找到但终生无法解决这个问题的资料。 它归结为从 CoCreateInstance 返回的
我将 DirectInput 与 Direct3D 11 一起使用,并针对 x64 进行编译,我从这一行得到一个 E_INVALIDARG: HRESULT hr = DirectInput8Crea
我有一个 ATL COM 组件,它引发一些由托管(C# 和 VB.NET)代码处理的事件。该组件当前由 VS2005 VB.NET 项目(作为 ActiveX 控件)使用,并且引发了所有事件并且一切正
我试图弄清楚为什么我在运行代码时总是收到 E_INVALIDARG 错误。 ID3D11Buffer * cbPerObjectBuffer; cbPerObject cbPerObj; cb
我正在使用 DirectX11 用 C++ 编写程序。现在我想从着色器开始,为此我还需要 ID3D11InputLayout //in main shader.Bind(DeviceContext);
我有以下代码: struct shaderData { char *shaderCode; UINT size; }; struct shaderData *CubeApp::GetS
我正在使用 MediaFoundation使用 SharpDX 对来自 desktop duplication frames 的视频文件进行编码. 我正在创建纹理并捕获屏幕。然后将此纹理传递给 MFC
创建 d3d11 设备和交换链的代码无法在某些计算机上运行并返回 E_INVALIDARG 错误。对于具有相同版本 DirectX 的计算机,这也有所不同。我似乎找不到不同行为的原因。 DXGI_MO
我在调用 CreateGraphicsPipelineState() 时遇到了一个奇怪的错误。该函数返回 E_INVALIDARG,即使描述已全部设置。 之前的描述有效,我尝试将 indexbuffe
我正在尝试用 C++ 初始化 Direct3D11。在安装了 Visual Studio 的机器上(所有这些都在 Windows 10 上运行),它运行良好。在其他计算机(未安装 Visual Stu
好吧,我已经迷路了几个小时了...... IXSLTemplate::putref_stylesheet 不记录除 E_FAIL 之外的任何错误。 但是在我的例子中 putref_stylesheet
问题 我正在尝试调用 ProcessOutput 以从我的解码器获取解码数据并出现以下错误: E_INVALIDARG One or more arguments are invalid. 我尝试过的
COM 接口(interface)方法可以返回各种 HRESULT 值来表示传递的参数值无效。我什么时候返回 E_POINTER 什么时候返回 E_INVALIDARG? 据我所知,如果一个方法在封装
我有以下调用,无论我尝试什么,hresult 总是 E_INVALIDARG: LogMessage(L"Creating swap chain. Emulation: " + std::to_wst
我有一个 WPF 应用程序。在构建它时出现以下错误: Could not load file or assembly or one of its dependencies. The parameter
运行带有函数 DCompositionCreateDevice2 的 Win32C++ 源代码时出现异常问题,这是用 VS 2015 编译的。 源代码编译没有任何错误,但显示上述运行时错误。用VS 2
我有一个 d3dDevice: ComPtrd3dDevice; 我在这里将它用于 dxgiDevice: ComPtr dxgiDevice2; HRESULT hr; hr
我正在尝试在 GPU 内存中创建缓冲区以从 CPU 上传数据。 GPU 访问将是只读的。数据将用作计算着色器的输入缓冲区。 CreateBuffer() 失败并出现错误 0x80070057 (E_I
我是一名优秀的程序员,十分优秀!