所以我是着色器的新手(使用 XNA),我遇到了一个我无法解释的超级奇怪的错误。考虑以下像素着色器函数:
float4 BasicTest(float2 coords: TEXCOORD0) : COLOR0
{
float4 src=tex2D(s0, coords);
float4 dst=tex2D(s1, coords);
float4 color=src;
if (coords.x>0.5) color=dst;
return color;
}
正如预期的那样,这将src
在屏幕左侧和右侧显示纹理。dst
但是,如果我只是使用:
float4 BasicTest(float2 coords: TEXCOORD0) : COLOR0
{
float4 src=tex2D(s0, coords);
float4 dst=tex2D(s1, coords);
float4 color=dst;
return color;
}
我src
登上了整个屏幕!
显然,着色器根本拒绝显示dst
,除非它处于某种表达式中(color=src*0.5+dst*0.5
也可以正常工作)。我想我可以在这个问题上作弊(if (coords.x>=0)
也许),但我真的很想知道是什么原因造成的!
如果您需要有关我的代码的更多详细信息,请告诉我。