簡體   English   中英

XNA 4 C#-非Alpha混合成黑色

[英]XNA 4 C# - Not Alpha Blending to Black

我正在嘗試使我的啟動畫面淡化為黑色。 我意識到它會淡入默認行GraphicsDevice.Clear(Color.White);清除屏幕的任何顏色GraphicsDevice.Clear(Color.White); 在默認的更新方法中。 當我將其設置為白色時,我的圖像會變成白色,這很有意義。 因此,我將其從“白色”更改為“黑色”,但是我的圖像不再消失或看起來不像它了。

public void SplashUpdate(GameTime theTime)
        {
            gameTime = theTime;

            if ( theTime.TotalGameTime.Seconds > 1.4 )
            {
                Draw.blender.A --;
                if (Draw.blender.A == 0)
                {
                    game1.currentState = PixeBlastGame.Game1.GameState.gameSplash;
                    MediaPlayer.Play(Game1.sMenu);
                }
            }
        }

blender是應用到我的初始屏幕紋理上的顏色,並按如下定義: public static Color blender = new Color(255, 255, 255);

Xna 4.0使用預乘alpha,因此您的代碼不正確...。您應該將顏色乘以alpha ...但是我會做類似的事情:

 float fadeDuration = 1;
 float fadeStart = 1.4f;
 float timeElapsed = 0;
 Color StartColor = Color.White;
 Color EndColor = Color.Transparent;

 void Update(GameTime time)
 {
     float secs = (float) time.ElapsedTime.TotalSeconds;

     timeElapsed += secs;
     if (timeElapsed>fadeStart)
     {
          // Value in 0..1 range
          var alpha =(timeElapsed - fadeStart)/fadeDuration;  
          Draw.Blender = Color.White * (1 - alpha);
          // or Draw.Blender = Color.Lerp(StartColor, EndColor, alpha);

          if (timeElapsed>fadeDuration + fadeStart)
          {
                Draw.Blender = EndColor;
                // Change state
          }
     }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM