基本上我有这个简单的寄存器,我在顶点着色器中用于动画目的
cbuffer cbSkinned : register(b3)
{
float4x4 boneTransforms[96];
};
不幸的是,我无法编译我的着色器/应用程序,尽管我创建了我的顶点和放大器。着色器使用_5_0。 Visual Studio是否以某种方式迫使我使用vs_4_0_xxx?
期待一些回复,谢谢。
答案 0 :(得分:0)
Visual Studio默认将HLSL文件构建为xx_4_0_level_9_1
,该文件适用于所有Direct3D功能级设备。所有10level9着色器配置文件都通过两次构建相同的代码来工作:一次用于在Direct3D 10.0或更高版本设备上使用的Shader Model 4.0,一次用于9.x设备的Shader Model 2.0。由于SM 2.0的限制性更强,因此SM 2.0限制通常会失败。在这种情况下,您尝试使用384个着色器常量槽(每个槽都是一个float4),而Shader Model 2.0只需要256个这样的着色器常量槽。
如果您将目标配置文件更改为Shader Model 4.0或更高版本,则可能会在没有任何问题的情况下构建。请记住,如果使用Shader Model 5.0配置文件,它只能在Direct3D功能级别11.0,11.1,12.0或12.1设备上使用。