大家好,我刚刚开始在 Windows Phone 7 上使用 XNA 4.0,并且正在寻找一些关于如何在 Texture2D 上实现模糊效果的信息?根据我收集到的信息,我们不能在 WP7 平台上使用着色器,而且我很难找到关于这个主题的信息。
非常感谢,安东。
大家好,我刚刚开始在 Windows Phone 7 上使用 XNA 4.0,并且正在寻找一些关于如何在 Texture2D 上实现模糊效果的信息?根据我收集到的信息,我们不能在 WP7 平台上使用着色器,而且我很难找到关于这个主题的信息。
非常感谢,安东。
理论上,是的。但是,这是一项 CPU 密集型任务。如果您获取像素数据,将其粘贴在位图中,并在 C# 中像着色器一样迭代像素,那么您可以获得相同的效果。然后您要做的就是从位图中获取颜色数据,将其重新放入纹理中,然后重新绘制它。但鉴于您必须为每次抽奖调用都这样做,这对手机处理器来说将是一个巨大的挑战。我手头没有我的代码,但我已经将这种方法用于许多“伪着色器”。它不是有效的,但在谨慎使用时是有效的。
另一个相当便宜的精灵“方向模糊”方法是保留一个简短的 FIFO 队列,记录精灵在最近几次更新中的位置(它的位置)。这是一个位置“历史轨迹”。然后,以相反的时间顺序在这些位置绘制精灵(首先是最旧的),颜色蒙版从几乎透明开始(对于历史轨迹中最旧的成员),对于历史轨迹中的每个后面的位置变得不那么透明, 并且对于精灵的当前位置是白色的。这种方法变得更昂贵(耗时)具有更大的历史轨迹。当对象移动得太快时,它也可能不会产生良好的模糊 - 因为当前位置和前一个位置之间会有太多空间。在这种情况下,您可以插入更接近当前位置的位置以获得更好的模糊效果。最终结果可能会被认为是重影而不是模糊,但如果这就是您所需要的,那么这很容易实现。