错误0x80070057为Direct3d11调用VertexShader

时间:2016-05-10 19:47:27

标签: directx-11 sharpdx direct3d11

我的Windows 8.1系统安装了Directx11,但我的视频卡是Directx 9.我试图使用SharpDX库并且输入的参数不正确'错误新增了一个VertexShader对象。

以下是我尝试的内容

  1. 运行Directx 9并使用这些库。 Microsoft现在不允许从他们的网站下载Directx 9库。

  2. 使用软件模拟运行。这是早期开发,所以我在这个阶段可以使用该软件模拟。此尝试因另一个错误而失败。

  3. 这是电话。 d3dDevice和vertexShaderByteCode是非空的

         new D3D11.VertexShader(d3dDevice, vertexShaderByteCode);
    

    问题0.有没有办法确定它不喜欢的参数?我使用理论上有效的教程代码。

    问题1.错误是否来自视频卡?

    问题2.这是一个已知问题吗?

    感谢,

    约翰

2 个答案:

答案 0 :(得分:1)

如果启用Direct3D调试层,您应该获得有关调用失败原因的更多信息。

您的视频卡名称是什么?您的视频卡是Direct3D hardware feature level的内容? 9.1,9.2,9.3?您可以通过从Visual Studio命令提示符运行dxcapsviewer来进行检查。 DirectX 11可以支持9.1 - 12.1的功能级别,因此很可能至少某些功能可以在您的硬件上运行。

答案 1 :(得分:1)

我明白了。我正在使用DirectX 11的示例代码,并且像素和顶点着色器的版本与我拥有的DirectX 9卡不兼容。在编译着色器的调用中,像素着色器的版本是ps_5_0,我需要ps_4_0_level_9_1,顶点着色器的版本是vs_5_0,我需要vs__4_0_level_9_1。 '无效参数'是编译后的着色器代码。