D3DCompile E_INVALIDARG

D3DCompile E_INVALIDARG

本文关键字:INVALIDARG D3DCompile      更新时间:2023-10-16

我在这里遇到了d3dcompile的问题。我正在编写具有CX C 运行时的UWP应用程序。有一个代码

    const std::string shaderSource =
        "struct PixelShaderInputn"
        "{n"
        "    float3 color : COLOR0;n"
        "};nn"
        "float4 main(PixelShaderInput input) : SV_TARGETn"
        "{n"
        "    return float4(1.0f, 1.0f, 0.0f, 1.0f);n"
        "}";

    HRESULT hr = D3DCompile(
        shaderSource.c_str(), 
        shaderSource.length(),
        NULL, 
        NULL, 
        NULL, 
        "main", 
        "ps_5_0", 
        NULL,
        NULL, 
        &pShaderCode, 
        &errorBlob);

结果,我得到了e_invalidarg。

有趣的是,如果我在着色器的文本中犯了一个错误(例如,请勿编写另一个输入点(,那么结果是特定的编译错误。

有什么问题?

不应将传统DirectX SDK用于UWP应用程序开发。

请参阅MSDN:DirectX SDK在哪里?和此博客文章。

Windows 8.0,Windows 8.1和Windows 10的Windows SDK已经包含了所有最新的DirectX标头,包括最新版本的D3DCompile(版本#47版本,与Legacy Directx SDK的版本#43(。参见HLSL,FXC和D3DCOMPILE

传统DirectX SDK的几个位是不建议的,并且在Windows SDK中不可用,尤其是D3DX9,D3DX10和D3DX11。看到没有D3DX的生活。

确实,即使您仍在定位Windows XP -OR-如果您需要Xaudio2在Windows 7上,则不需要传统DirectX SDK,即使是Win32桌面开发。

yeap,丢弃旧的SDK,它起作用!

相关文章:
  • 没有找到相关文章