【问题标题】:SharpDX ShaderBytecode.CompileFromFile to PixelShaderSharpDX ShaderBytecode.CompileFromFile 到 PixelShader
【发布时间】:2016-11-24 06:07:24
【问题描述】:

目前我正在从 SlimDX 迁移到 SharpDX。它们之间有些东西是不同的,比如加载着色器等:

我在创建PixelShader 类时遇到问题(同样适用于VertexShader 类)。问题是,我在这个主题上找到的每个示例都无法编译。

例如:

using (var pixelShaderByteCode = ShaderBytecode.CompileFromFile(filename, "PS", "ps_5_0", shaderFlags))
    shader.PixelShader = new SharpDX.Direct3D11.PixelShader(device, pixelShaderByteCode);

问题是,SharpDX.Direct3D11.PixelShader 没有将ComplilationResult 作为参数。我可以使用vertexShaderByteCode.Bytecode,它是ShaderBytecode,但这也是无效的。

有一个vertexShaderByteCode.Bytecode.Data,即DataStream。我可能会从中创建byte[],但我认为这可以更容易解决吗?我错过了什么吗?

使用:SharpDX 3.1.1

【问题讨论】:

    标签: sharpdx


    【解决方案1】:

    我发现了问题:

    看起来我还需要引用 SharpDX.D3DCompiler 来编译 DX11。它使用的是 DX9 编译器。

    SharpDX.D3DCompiler.ShaderBytecode(DX11) vs SharpDX.Direct3D9.ShaderBytecode(DX9)

    我会把这个留给有同样困难的人。

    【讨论】:

      【解决方案2】:

      CompilationResult 由编译返回,您可以测试字节码是否为空,如果是,则可以检查错误代码(最好在调试中:))。

      HasErrors : boolean
      Message : string
      

      也检查这些。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-18
        • 1970-01-01
        • 2017-07-18
        • 1970-01-01
        • 1970-01-01
        • 2010-09-22
        相关资源
        最近更新 更多