为了为 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 并避免流量控制),我认为它会消失。