WPF尝试使用pixelshader来禁用某些通道

时间:2014-02-08 00:29:22

标签: wpf shader

我正在尝试使用像素着色器来禁用图像上的特定通道。不幸的是,我似乎无法让我的着色器工作,也不知道如何对此进行逐步调试。我已经尝试过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);

我得到的最终结果是图像呈现正常。就好像我根本没有应用着色器一样。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

我是doing something similar - 并且发现了Shazzam这是一个非常棒的程序,它不仅可以让您使用着色器进行调整和旋转,还可以为您生成代码。我自己没有使用该代码,但它提供了一个很好的示例如何使用着色器与C#和XAML。

您甚至可以导入自己的图像进行测试,直到您的着色器代码完全正确。