我正在尝试使用像素着色器来禁用图像上的特定通道。不幸的是,我似乎无法让我的着色器工作,也不知道如何对此进行逐步调试。我已经尝试过PIX for Windows,但是没有使用该工具取得任何成功。
这是我的着色器文件:ChannelEffect .fx
sampler2D implicitInputSampler : register(S0);
float4 main(float2 uv : TEXCOORD) : COLOR
{
// Get the source color
float4 color = tex2D(implicitInputSampler, uv);
color.g = 0.0f;
color.b = 0.0f;
// Return new color
return color;
}
现在我正在对我正在禁用的频道进行硬编码,只是为了测试它。此示例应仅显示红色通道。
ChannelEffect channelEffect = GetChannelEffect(displayChannel);
image.Effect = channelEffect;
dc.DrawImage(image.Source, destRect);
我得到的最终结果是图像呈现正常。就好像我根本没有应用着色器一样。有任何想法吗?
答案 0 :(得分:1)
我是doing something similar - 并且发现了Shazzam这是一个非常棒的程序,它不仅可以让您使用着色器进行调整和旋转,还可以为您生成代码。我自己没有使用该代码,但它提供了一个很好的示例如何使用着色器与C#和XAML。
您甚至可以导入自己的图像进行测试,直到您的着色器代码完全正确。