SharpDX ShaderBytecode.CompileFromFile到PixelShader

时间:2016-11-11 12:03:51

标签: sharpdx

目前我正在从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.DataDataStream。我可以从中创建byte[],但我认为这可以更容易解决?我错过了什么吗?

使用:SharpDX 3.1.1

2 个答案:

答案 0 :(得分:1)

我发现了问题:

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

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

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

答案 1 :(得分:0)

编译返回

CompilationResult,您可以测试字节码是否为空,如果是,则可以检查错误代码(尽管调试最佳:)。

HasErrors : boolean
Message : string

同时检查这些。