【发布时间】:2012-10-21 10:10:26
【问题描述】:
要为 Windows 应用商店应用程序(和 Windows Phone 8)构建着色器模型 4_0_level_9_3,您需要使用 vs_4_0_level_9_3 和 ps_4_0_level_9_3。虽然使用为 DirectX 10 及更高版本设计的 HLSL 语法听起来不错,但我无法使用 DirectX 9 的 VPOS 语义或在像素着色器中使用 DirectX 10 及更高版本的 SV_POSITION,所以除了制作另一个输出裁剪空间中顶点位置的语义?
PS:4_0_level_9_3 上的一些着色器吐出“内部错误:level9 和 d3d10 着色器之间的 blob 内容不匹配”,我不知道这是怎么回事。可能与我认为的驱动程序有些不一致(我使用的是 Nvidia GTX 560 TI),如果您只使用发布标志编译着色器(如优化级别 3 并避免流控制),我认为它会消失。
【问题讨论】:
-
"我认为可能与驱动程序存在一些不一致(我使用的是 Nvidia GTX 560 TI),如果您仅使用发布标志编译着色器(如优化级别 3 并避免流控制),我认为它会消失)。” - 我在多台构建机器上看到过这种情况,关闭“禁用优化”可以解决问题。它不会阻止调试,只需注意编译指令的流程可能与您的 HLSL 中的流程有很大不同。我在所有功能级别使用相同的语义没有问题,特别是 SV_POSITION - 虽然我总是使用顶点布局结构......
标签: windows windows-phone-8 windows-8 hlsl