XNA浮点值不作为参数

通过微软XNA框架,我可以通过改变它的整数值来改变有色纹理的颜色,例如:

Int x = 255; if(true) { x--; tint = new Color(x, 255, 255); } Draw(texture, Vector2.Zero, tint); 

如果x是一个浮点数,那么精灵的外观将不会改变,直到x值变为零。 随着整数的变化,随着时间的推移,贴图会逐渐消失。

为什么是这样? :S

这是因为在C#中重载分辨率是如何工作的。 在有三个参数的可用构造函数中,有:

 Color(int, int, int) Color(float, float, float) 

如果你传递所有的整数,你会得到整数版本。 但是如果你为任何parameter passing一个float ,你将得到float (整数将被隐含地转换为float )。

整数版本的值取值范围为0255float版本为每个通道取值范围为0.0f1.0f (并在内部转换它们以涵盖整数范围)。

(另见这篇博文 )