1

我在 XNA4 中有一个效果文件,被编译为 Shader Model 3。

这条线编译得很好(在两种颜色之间插值):

return lerp(float4(1,0,0,1),float4(0,0,1,1),pf.x);

将第一种颜色的绿色分量从 0 更改为 0.5:

return lerp(float4(1,0.5,0,1),float4(0,0,1,1),pf.x);

导致编译失败:

error X6045: When constant registers are read multiple times in a single 
instruction, the _abs modifier must either be present on all of the 
constants, or none of them. 

谷歌搜索错误代码不返回任何内容(编辑:除了这个问题)

4

1 回答 1

1

根据文档,传递给的所有值都lerp()应该具有相同的类型和大小,所以也许这会起作用:

return lerp(float4(1,0.5,0,1),float4(0,0,1,1),float4(pf.x,pf.x,pf.x,pf.x));
于 2012-06-16T08:53:34.990 回答