我正在C#/ XNA开发2D游戏,其中sprite / backgrounds / etc是Texture2Ds。我有兴趣在“白天”或“夜间”渲染特定场景。显然,一种选择是每个图像有两个副本,一个比另一个更暗,但这不是很可扩展。有没有办法在运行中调整颜色,使它们看起来更暗?我想最简单的方法是调整亮度或其他东西(或者看起来最好的东西),而不是尝试将某种统一变换应用于RGB值,但目前这个问题较少。有没有办法说“画这个Texture2D,但用这个数量调整所有颜色”?
谢谢!
答案 0 :(得分:2)
检查接受颜色参数的SpriteBatch.Draw的重载。它完全符合您的要求。
答案 1 :(得分:1)
在你的分享中 e.g。
ps_out ps( ps_in In )
{
PS_OUT Out = ( PS_OUT ) 0;
float4 color;
color = tex2D( sBase, In.Base.xy );
Out.Color = color;
return Out;
}
你可以使用alpha混合,然后在颜色成员上使用swizzle运算符并乘以颜色的alpha / opacity。
e.g。 color.a = color.a * opacity / 255.0f