1

directx アプリケーションで Photoshop のような選択フィードバックを描画する必要があります。これを行うためのアルゴリズムがウィキペディアで見つかりました。しかし、特に選択領域が任意のジオメトリである可能性がある場合、これが正しい方法であるかどうかはわかりません。誰かが Directx を使用して実装しましたか? どんなヒントでも大歓迎です。

4

1 に答える 1

2

私のコメントに基づいて、必要な結果を実現するための単純なピクセル シェーダーを次に示します。

float4 PS( float4 pos : SV_POSITION) : SV_Target
{
    float w = ((int)(pos.x + pos.y + t) % 8);
    return (w < 4 ? float4(0,0,0,1) : float4(1,1,1,1));
}

xy斜めのストライプパターンを生成するために追加されます。次のように想像できます。yが一定でx1 増加すると、wも 1 増加します。 も同様ですy。したがって、w一定に保つには、(x+1, y-1)または(x-1, y+1)(または他のステップサイズ)に移動する必要があります。演算子を使用して%、8 ピクセルの周期性を生成します。前半は黒く塗りつぶし、後半は白く塗りつぶします。

これは同等ですが、よりパフォーマンスの高いシェーダーです。モジュロと比較の代わりにビット操作を使用します。

float4 PS( float4 pos : SV_POSITION) : SV_Target
{
    int w = ((int)(pos.x + pos.y + t) & 4);
    return float4(w,w,w,1);
}
于 2013-05-31T12:05:36.317 に答える