在我的基于2D平铺的游戏中,玩家可以在平铺时改变颜色。简单的方法(以及我已经完成的)是使用SpriteBatch.Draw
中的tint
参数。不要着色,但“着色”精灵
这看起来不错,而且这里有一个例子:
但是说,我要画的木白。如果你曾经与色调混淆,你知道这是不可能的使用色调参数。 Color.White
会将sprite设为默认颜色,而不是白色。这不是一个主要问题,但我想有些用户可能需要它。
我的问题是,有没有一种基于色调/饱和度而不是色调的精灵颜色的方法。类似于GIMP中的“colorify”功能。
一个显而易见的方法是使用在GIMP这个功能,只是出口的精灵为每种颜色。麻烦在于,这对我所有的精灵来说都是永远的事情,每个精灵都有多种变化,这意味着你可以在一个模块类型中总共使用100个以上的组合。
这可能吗?我想着色器可能会完成这项工作。
为什么不让基础精灵尽可能明亮(接近白色)?你可以用像素着色器实现任意效果,但我怀疑在这种情况下这是必要的。在我看来,Gimp使用与tint参数相同的技术。 –
研究HSV颜色模型:[链接](http://en.wikipedia.org/wiki/HSL_and_HSV)。您可以将您的纹理从RGB转换为HSV,将偏移应用于Hue以更改颜色,然后将其转换回RGB。虽然如果你的纹理以白色开始,并且使用内置的XNA着色,它绝对会更容易。 – foolmoron