目前,我正在进行从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
发布于 2016-11-11 12:08:27
我发现了问题:
看来我也需要引用SharpDX.D3DCompiler
,以便为DX11编译。它使用的是DX9编译器。
SharpDX.D3DCompiler.ShaderBytecode
(DX11) vs SharpDX.Direct3D9.ShaderBytecode
(DX9)
我会把这个留给任何有同样困难的人。
发布于 2016-11-23 22:07:24
CompilationResult
由编译返回,您可以测试字节码是否为null,如果为null,则可以检查错误代码(尽管在调试中最好:)。
HasErrors : boolean
Message : string
也检查一下这些。
https://stackoverflow.com/questions/40547654
复制相似问题