更新到Sharpdx 2.6.2后无法编译hlsl着色器

时间:2014-09-07 07:45:17

标签: c# directx hlsl directx-11 sharpdx

我有一个使用SharpDX 2.5.0的C#项目,一切正常。 我转到SharpDX的最新稳定版本2.6.2。我的项目编译正常,但在运行时失败,因为它无法编译着色器。我使用这行代码:

var vertexShaderByteCode = ShaderBytecode.CompileFromFile(ShaderFileName, "Base_VS", "vs_4_0");

无论着色器文件的实际内容是什么,它都会失败,并显示以下错误:

path/to/my/shader.hlsl(1,1): error X3000: Illegal character in shader file

我认为它与文件的UTF-8编码有关,但尝试各种编码并没有解决问题。 还有其他人遇到类似的问题或有建议吗?

2 个答案:

答案 0 :(得分:5)

它已经过时了,但无论如何我都会回应: 新的visual studio文本文件的默认编码是带BOM的UTF-8。这意味着你文件的前3个字符是 这些角色是“非法的”

来源:
http://en.wikipedia.org/wiki/Byte_order_mark#UTF-8

答案 1 :(得分:3)

我终于找到了解决方案。 如果有人遇到相同的情况,我找到了解决方法:

  • 这确实是一个编码问题。由于某种原因,我的着色器文件的格式不再兼容,并且出于某种原因只是在Visual Studio中更改编码并没有解决问题。在文件的开头似乎还有一些看不见的字符(可能是BOM?)。
  • 从头开始重新创建文件(来自记事本)。