使用着色器模型 5,但得到最大的vs_4_0_level_9_3误差
Using Shader model 5 but getting maximum vs_4_0_level_9_3 error
基本上我有一个简单的寄存器,我在顶点着色器中用于动画目的
cbuffer cbSkinned : register(b3)
{
float4x4 boneTransforms[96];
};
不幸的是,我无法编译我的着色器/应用程序,尽管我已经使用 _5_0 创建了我的顶点和着色器。Visual Studio是否以某种方式强迫我使用vs_4_0_xxx?
期待一些回复,谢谢。
Visual Studio默认将HLSL文件构建为适用于所有Direct3D功能级设备的xx_4_0_level_9_1
。所有 10level9 着色器配置文件都通过生成相同的代码两次来工作:一次用于在 Direct3D 10.0 或更高版本设备上使用的着色器模型 4.0,一次用于 9.x 设备的着色器模型 2.0。由于 SM 2.0 的限制性要强得多,因此由于 SM 2.0 的限制,它经常失败。在这种情况下,您尝试使用 384 个着色器常量插槽(每个插槽都是一个 float4),而着色器模型 2.0 仅要求 256 个这样的着色器常量插槽。
如果将目标配置文件更改为着色器模型 4.0 或更高版本,则构建时可能会没有任何问题。请记住,如果使用着色器模型 5.0 配置文件,则它只能在 Direct3D 功能级别 11.0、11.1、12.0 或 12.1 设备上使用。
请参阅 Direct3D 功能级别和 HLSL、FXC 和 D3DCompile
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 为什么在浮点中从大到小会引入更多的误差
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 数据成员SFINAE的C++17测试:gcc vs clang
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 正在VS调试器中监视映射条目
- Confusion: decltype vs std::function
- 将IBM Rhapsody模型集成到VS 2019中
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- 修改 VS Code 中的默认C++代码段
- 如何使用c++在VS 2019上运行SQL查询
- vs 2015 constexpr变量不恒定,但与2019相比还好吗
- 完美前进使用 std::forward vs RefRefCast
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- consteval wrapper vs. source_location
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- variadic模板代码中的GCC VS MSVC编译误差