Direct2D中的像素着色器沿中间渲染错误

时间:2016-04-28 16:20:30

标签: hlsl direct2d pixel-shader

我为Direct2D创建了一个像素着色器,它沿着边缘模糊,alpha通道低于1.0。 对于每个像素,我向上,向下,向左和向右采样blurRadius个像素。在中间(垂直和水平),发生一些渲染错误。当我只对像素I处理后面的像素进行采样时,这些会消失。我认为我的输入图像(尺寸为1920x1080)已被切断,我在其所在的部分之外进行采样。 有没有人知道发生了什么,如果我的假设是正确的,怎么办呢?请参阅下面的结果图像。当我只对左侧或顶部的周围像素进行采样时,暗线不应该存在并消失。

Alpha blur errors

1 个答案:

答案 0 :(得分:0)

我终于解决了这个问题,我希望这可以帮助别人。 我发现问题只发生在使用不同于输出大小的输入大小时。我根据Microsoft的示例效果创建了我的效果,可以找到here。这样做的问题是它会将 stompClient.connect(headers , function (frame) { console.log("Conn OK " + url); }, function (error) { console.log("Conn NOT OK " + url + ": " + JSON.stringify(error)); }); } 映射到pInputRects[0]中的pOutputRect。这会以某种方式混淆效果。修复方法是将MapOutputRectToInputRects设置为pInputRects[0]函数中的pInputRects[0]