调整整个场景的颜色

时间:2010-07-19 12:14:44

标签: c# xna colors

我正在C#/ XNA开发2D游戏,其中sprite / backgrounds / etc是Texture2Ds。我有兴趣在“白天”或“夜间”渲染特定场景。显然,一种选择是每个图像有两个副本,一个比另一个更暗,但这不是很可扩展。有没有办法在运行中调整颜色,使它们看起来更暗?我想最简单的方法是调整亮度或其他东西(或者看起来最好的东西),而不是尝试将某种统一变换应用于RGB值,但目前这个问题较少。有没有办法说“画这个Texture2D,但用这个数量调整所有颜色”?

谢谢!

2 个答案:

答案 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