我必须在我的 directx 应用程序中绘制像 Photoshop 这样的选择反馈。我在维基百科上遇到了一个算法来做到这一点。但是,我不确定这是否是正确的方法,特别是如果我的选择区域可以是任意几何图形。有人使用 Directx 实现它吗?非常感谢任何提示。
问问题
544 次
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));
}
x
并y
添加以产生对角条纹图案。你可以想象如下: Ify
是常数并x
增加 1,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 回答