1

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;
}
4

1 に答える 1

0

Gridうーん... ざっと見てみると、(オーバーレイを最後に)に 2 つの画像を配置することで同じことが達成できるように思えます。オーバーレイの Alpha が 0 の場合、別の画像が表示されます。その後、プロイゴン ジオメトリをGrid.Clipプロパティに割り当てることができます。

于 2010-07-08T09:36:43.123 に答える