【发布时间】:2011-07-31 20:18:16
【问题描述】:
我目前正在 XNA 中制作 2D“蠕虫”克隆,其中一个功能是“可变形”地形(例如,当火箭击中地形时,会发生爆炸,并且一大块地形会消失)。
我目前的做法是使用随着接近中心而具有逐渐更高红色值的纹理。我循环遍历该“变形”纹理的每个像素,如果当前像素与地形像素重叠并且具有足够高的红色值,我将表示地形的颜色数组修改为透明。如果当前像素没有足够高的红色值,我将地形颜色变黑(红色值越接近阈值越黑)。在此操作结束时,我使用 SetData 更新我的地形纹理。
我意识到这不是一个好方法,不仅因为我读过有关管道停顿等的信息,而且还因为如果同时添加大量陨石坑,它可能会变得相当滞后。我想在 GPU 上重新制作我的火山口生成,而不是在目标和要修改的纹理之间使用渲染目标“乒乓”。这不是问题,我知道该怎么做。问题是我不知道如何使用这种方法来保持我的燃烧效果。
现在的燃烧效果如下所示:
有人知道如何创建类似的燃烧效果(使形成的火山口周围的边缘变暗)吗?我对着色器完全不熟悉,但如果需要它,如果有人指导我如何做到这一点,我将非常感激。如果还有其他方法也很好。
【问题讨论】: