CreateGraphicsPipelineState 失败并显示E_INVALIDARG
CreateGraphicsPipelineState fails with E_INVALIDARG
在Directx 12 中创建管道状态对象失败,E_INVALIDARG
调试层输出一堆废话,说实例中的数据无效D3D12_GRAPHICS_PIPELINE_STATE_DESC
:
D3D12 错误: ID3D12Device::CreateBlendState: DestBlendAlpha[ 0 ] is 尝试使用D3D11_BLEND值 (0x4) 来操作颜色,这 无效。[ STATE_CREATION错误 #115: CREATEBLENDSTATE_INVALIDDESTBLENDALPHA] D3D12 错误: ID3D12Device::CreateDepthStencilState: BackFace.StencilFailOp 有一个 无法识别的值。[ STATE_CREATION错误 #106: CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP] D3D12 错误: ID3D12Device::CreateDepthStencilState: BackFace.StencilDepthFailOp has 无法识别的值。[ STATE_CREATION错误 #107: CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP] D3D12 错误: ID3D12Device::CreateDepthStencilState: BackFace.StencilPassOp 有一个 无法识别的值。[ STATE_CREATION错误 #108: CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP] D3D12 错误: ID3D12Device::CreateDepthStencilState: BackFace.StencilFunc 有一个 无法识别的值。[ STATE_CREATION错误 #109: CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC] D3D12 错误: ID3D12设备::创建光栅器状态:填充模式具有无法识别的内容 价值。[ STATE_CREATION错误 #95: CREATERASTERIZERSTATE_INVALIDFILLMODE] D3D12 错误: ID3D12设备::创建光栅器状态:填充模式必须为 D3D12_FILL_MODE_SOLID 当保守栅格 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON:填充模式 = D3D12_FILL_MODE_WIREFRAME,保守光栅 = D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON. [ STATE_CREATION错误 #95: CREATERASTERIZERSTATE_INVALIDFILLMODE] D3D12 错误: ID3D12设备::创建*:指定的节点掩码 (0xcccccccc) 包含一个 超出设备节点计数的位集。[ STATE_CREATION错误 #900:INVALID_NODE_INDEX]
不胜枚举...
看起来内存已损坏,而事实并非如此,我已经一遍又一遍地检查了所有值,它们很好。 至少某些值必须是正确的,例如查看最后一条消息,它说
指定的节点掩码 (0xcccccccc)
。我确定在调用之前没有0xccccccccCreateGraphicsPipelineState
调试器确认。
事实证明,在我的机器上构建的exe将无法在其他计算机上创建PSO,但是如果要在其他机器上构建项目并在我的机器上运行,则不会出现PSO问题。
重新安装 Windows SDK 有助于消除该问题。
我读过有人的回答,声称重新安装或更改 SDK 版本为他们解决了问题。但不适合我。这实际上是我的程序.exe
旁边缺少的dxil.dll
。
您可以先尝试将psoDesc
初始化为零,以避免不正确的值,例如NodeMask
字段中的0xcccccccc
:
D3D12_GRAPHICS_PIPELINE_STATE_DESC psoDesc = {};
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 程序崩溃并显示"std::out_of_range"错误
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 从数据库实时显示QT c++中的数据
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 显示错误输出的简单数组排序程序
- Qt自定义QPush按钮未显示在布局上
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 显示基于用户输入的整数的字符
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 密码登录程序将永远循环并显示不正确的结果
- std::strftime 在 Windows 中使用 GMTIME 将时区 UTC 显示为 UTC+1