我已经创建了自定义着色器效果,看起来像这样:
class MyShaderEffect : ShaderEffect
{
private PixelShader _pixelShader = new PixelShader();
public readonly DependencyProperty InputProperty =
ShaderEffect.RegisterPixelShaderSamplerProperty("Input", typeof(MyShaderEffect), 0);
public MyShaderEffect()
{
_pixelShader.UriSource = new Uri("MyShader.ps", UriKind.Relative);
this.PixelShader = _pixelShader;
this.UpdateShaderValue(InputProperty);
}
public Brush Input
{
get { return (Brush)this.GetValue(InputProperty); }
set { this.SetValue(InputProperty, value); }
}
}
字符串
我需要对不同的图像应用这个着色器效果的稍微不同的变化(它有一些参数),但是当我尝试创建第二个MyShaderEffect对象时,我得到“'Input' property was already registered”异常。
有没有一种方法可以解决这个问题,这样我就可以从一个着色器创建多个ShaderEffect示例?
1条答案
按热度按时间34gzjxbg1#
依赖项属性应该使用
static
字段注册,因此每个类型只注册一次:字符串
此字段只是属性的标识符。它是一个键,用于使用
GetValue
和SetValue. The
访问属性值。