Регулировка цвета всей сцены - PullRequest
3 голосов
/ 19 июля 2010

Я занимаюсь разработкой 2D-игры на C # / XNA, где спрайты / фоны / и т. Д. - это Texture2D. Я заинтересован в рендеринге конкретной сцены в дневное или ночное время. Очевидно, что одним из вариантов будет иметь две копии каждого изображения, одно темнее другого, но это не очень масштабируемо. Есть ли способ настроить цвета на лету, чтобы они выглядели темнее? Я предполагаю, что было бы легче отрегулировать яркость или что-то (или что бы лучше не выглядело), ​​чем пытаться применить какое-то унифицированное преобразование к значениям RGB, но на данный момент это менее важная проблема. Есть ли способ сказать «нарисуйте эту Texture2D, но отрегулируйте все цвета таким образом на эту величину»?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 19 июля 2010

Проверьте перегрузки SpriteBatch.Draw , которые принимают параметр цвета. Он делает именно то, что вы ищете.

1 голос
/ 19 июля 2010

в вашей доле например,

 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;
 }

Вы можете использовать альфа-смешение, а затем использовать оператор Swizzle на элементе цвета и умножить альфа / прозрачность цвета.

например. color.a = color.a * opacity / 255.0f

...