SharpDX - fxc.exe 编译 hlsl 文件时出错
SharpDX - fxc.exe error when compiling hlsl file
我正在开始学习 C# 的 SharpDX 和全息模板。
编译项目时我在编译着色器文件时出错。
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。
谢谢!
需要加载 CSO 文件,然后创建相关的着色器。下面是我用来加载着色器的函数示例。请注意,在此示例中,您应该保留字节代码和顶点着色器。
Helper 函数是我的交叉 uwp/mfc 包装器,但它基本上 returns 内存中数据流中的文件。
CSO 文件是字节码,您需要将其附加到正确的 Sharpdx.Direct3D11 着色器 class。
字节码还用于引用语义接口(仅适用于顶点缓冲区)。一旦你创建了它,你的绘图调用就可以将数据与它关联的 GPU 寄存器进行匹配。但下面的代码至少会加载您的 CSO 文件并创建顶点着色器。
祝你好运。
using (Stream fileStream = Helper.GetFileStream(a_fileName, a_filePath))
{
a_byteCode = new D3DCompiler.ShaderBytecode(fileStream);
if (a_byteCode != null)
{
a_child = new D3D11.VertexShader(a_device, a_byteCode)
{
DebugName = "a_fileName"
};
}
else
{
throw new Exception("Unable to load file: " + a_fileName);
}
}
我正在开始学习 C# 的 SharpDX 和全息模板。
编译项目时我在编译着色器文件时出错。
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。
谢谢!
需要加载 CSO 文件,然后创建相关的着色器。下面是我用来加载着色器的函数示例。请注意,在此示例中,您应该保留字节代码和顶点着色器。
Helper 函数是我的交叉 uwp/mfc 包装器,但它基本上 returns 内存中数据流中的文件。
CSO 文件是字节码,您需要将其附加到正确的 Sharpdx.Direct3D11 着色器 class。
字节码还用于引用语义接口(仅适用于顶点缓冲区)。一旦你创建了它,你的绘图调用就可以将数据与它关联的 GPU 寄存器进行匹配。但下面的代码至少会加载您的 CSO 文件并创建顶点着色器。
祝你好运。
using (Stream fileStream = Helper.GetFileStream(a_fileName, a_filePath))
{
a_byteCode = new D3DCompiler.ShaderBytecode(fileStream);
if (a_byteCode != null)
{
a_child = new D3D11.VertexShader(a_device, a_byteCode)
{
DebugName = "a_fileName"
};
}
else
{
throw new Exception("Unable to load file: " + a_fileName);
}
}