2012-06-16 112 views
1

我在XNA4的效果文件,被编译为着色器模型3.为什么常量的值会影响HLSL着色器编译?

此行汇编精(2个色之间进行内插):

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. 

谷歌搜索的错误代码没有返回(编辑:不是这个问题除外)

+1

哦,它返回这个问题现在;-) – Joey

+0

所以你的意思是,发布“谷歌没有返回值”上净是只有永远正确暂时? – geofftnz

+0

如果您在SO上发帖,Google几秒钟后就会有索引问题。这只是我指出的好奇心,没有理由编辑你的帖子。 – Joey

回答

1

根据documentation所有传递给lerp()应该是相同的类型和大小的值,所以也许这将工作:

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

您也可以使用'pf.xxxx'而不是'float4(pf.x,pf.x,pf.x,pf.x)'。 – miloszmaki

相关问题