【发布时间】:2018-01-22 14:13:11
【问题描述】:
我开始学习 SharpDX 和 C# 的全息模板。
在编译项目时,我在编译着色器文件时出错。
var vertexShaderByteCode = ShaderBytecode.CompileFromFile("Content/Shaders/VertexSharderShared.hlsl", "VS", "vs_5_0", ShaderFlags.Debug);
fxc.exe 以代码 1 退出。
在示例中,他们在将着色器加载到字节码中时使用了一些 .cso 文件: code img
由于我不太了解 .cso 来自何处以及 Vprt 是什么,我更喜欢直接加载 hlsl 文件。我正在使用 SharpDX 3.0.2、SharpDX.Direct3D11 3.0.2 和 SharpDX.D3DCompiler 3.0.2。
谢谢!
【问题讨论】:
-
那些是编译着色器。
fxc是一个 HLSL 编译器,您也可以通过命令行执行它。你用的是什么版本的VS? VS 应该在编译你的项目时自动编译你的着色器 -
@Asesh 感谢您的回复。我正在使用 VS2017 并在 Hololens 模拟器上进行测试。我刚刚明白我必须指定编译着色器(.cso 文件)的位置。我尝试了这么多不同的 URI,终于找到了正确的,但它总是返回空我的变量 (vertexShaderByteCode) 的字节码值
-
好吧,如果你看看这个源代码:github.com/sharpdx/SharpDX/blob/master/Source/…
ShaderBytecode.CompileFromFile: Compiles a shader or effect from a file on disk所以你使用了错误的方法,因为 cso 已经是一个编译的着色器 -
还有
CompilationResult是ShaderBytecode.CompileFromFile的返回值,不是shader字节码 -
您的着色器可能有问题:
Content/Shaders/VertexSharderShared.hlsl。你应该在这里发布它的源代码
标签: c# directx hlsl vertex-shader sharpdx