我是 Silverlight 的新手,我遇到了与多边形结合的效果的小问题。我想实现着色器的渲染只在边缘内部而不是在边缘之外。如您所见,画笔正在执行此操作,但不是着色器的输出。有人知道解决此问题的解决方案吗?有没有办法获取像素着色器的输出并将其推送到多边形的填充属性中?
结果:http: //img64.imageshack.us/img64/2831/achieve.jpg
这是我的 xaml 代码:
<Polygon Name="TestPolygonWithEffect" Stroke="Black" StrokeThickness="1">
<Polygon.Points>
<Point X="100" Y="0"></Point>
<Point X="0" Y="200"></Point>
<Point X="200" Y="200"></Point>
</Polygon.Points>
<Polygon.Fill>
<ImageBrush ImageSource="Roof.jpg"></ImageBrush>
</Polygon.Fill>
<Polygon.Effect>
<f:TestShaderEffect>
<f:TestShaderEffect.Overlay>
<ImageBrush ImageSource="OverlayTest.png"></ImageBrush>
</f:TestShaderEffect.Overlay>
</f:TestShaderEffect>
</Polygon.Effect>
</Polygon>
这是我在 HLSL 中的着色器
sampler2D input : register(s0);
sampler2D overlay : register(s1);
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 returnColor = tex2D(overlay, uv);
if(returnColor.a == 0.0f)
return tex2D(input, uv);
else
return returnColor;
}