我不能用色彩着色器为我的精灵着色。这是问题所在:
左边的图像来自XNA,右边的图像是gimp。彩色精灵仍然有一些蓝色像素。蓝色用于传递色调。我认为scalling或anti-aliasing搞砸了。这是我的代码:
float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0
{
float4 color = tex2D(s0, coords);
float3 white = {1, 1, 1};
float3 colorTint = { 0.3f, 0, 0 };
if(color.a)
{
if(color.r < 0.1 && color.g < 0.1 && color.b > 0.1)
{
color.rgb = lerp(white, colorTint.rgb, 1 - color.b);
color.a = 1;
}
}
return color;
}
编辑: 看起来像将采样器状态设置为“SamplerState.PointClamp”是我的解决方案,但也许有人可以告诉我这里发生了什么?