DirectX CreateGeometryShader因E_INVALIDARG而失败

DirectX CreateGeometryShader因E_INVALIDARG而失败,directx,directx-11,directx-10,Directx,Directx 11,Directx 10,我在DirectX应用程序中使用了一个几何体着色器,该应用程序使用着色器模型4.0(gs_4_0)编译。着色器在使用DirectX 11卡的开发pc上正常工作,但在使用DirectX 10.1卡的两台客户端pc上失败。当应用程序使用返回结果为E_INVALIDARG的编译字节码调用CreateGeometryShader时失败 我假设客户端PC图形卡或驱动程序不支持我在几何体着色器中使用的某些功能 客户端计算机没有安装DirectX SDK,因此无法获得更详细的错误消息 我如何进一步调查这个问题

我在DirectX应用程序中使用了一个几何体着色器,该应用程序使用着色器模型4.0(gs_4_0)编译。着色器在使用DirectX 11卡的开发pc上正常工作,但在使用DirectX 10.1卡的两台客户端pc上失败。当应用程序使用返回结果为E_INVALIDARG的编译字节码调用CreateGeometryShader时失败

我假设客户端PC图形卡或驱动程序不支持我在几何体着色器中使用的某些功能

客户端计算机没有安装DirectX SDK,因此无法获得更详细的错误消息

我如何进一步调查这个问题?
是否有一个可能导致此问题的原因列表供我分析?

我假设您创建的设备具有必要的功能级别?或者您是否选择可用性上的FL?目前,我通过将null传递给D3D11CreateDevice和SwapChain,将功能级别保留为默认值-因此它将请求11,然后是10.1,然后是10等。您应该检查设备是否使用FL>10创建。如果它是用FL 9创建的,着色器将不会加载。我在dxdiag中检查过这些卡是否支持10.1功能级别,所以在这种情况下,我很高兴这不是问题所在。但是你是对的,我应该在某个时候更新我的代码,使其至少需要10级功能。在你的开发系统上,你是否启用了调试设备并检查了任何警告?您使用什么版本的FXC构建这些着色器,或者您是在运行时使用D3DCompile构建它们的?