目前我正在从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
答案 0 :(得分:1)
我发现了问题:
看起来我还需要引用SharpDX.D3DCompiler
来编译DX11。它使用的是DX9编译器。
SharpDX.D3DCompiler.ShaderBytecode
(DX11) vs SharpDX.Direct3D9.ShaderBytecode
(DX9)
我会把这个留给那些有同样困难的人。
答案 1 :(得分:0)
CompilationResult
,您可以测试字节码是否为空,如果是,则可以检查错误代码(尽管调试最佳:)。
HasErrors : boolean
Message : string
同时检查这些。