[XNA+Silverlight應用程式 in WP7]若3D模型貼圖帶有Alpha值,則SpriteBatch會變透明解決方法

  • 2024
  • 0
  • 2012-02-25

[XNA+Silverlight應用程式 in WP7]若3D模型貼圖帶有Alpha值,則SpriteBatch會變透明解決方法

今天遇到一個問題,就是模型的貼圖如果帶有Alpha值得話,在經過SpriteBatch作用完後,

會變成部分透明的狀態,如下圖左邊。

  • 左方是在模擬器中只剩下鋼盔跟鞋子的小矮兵….右邊是原本的模型

Capture4Capture5

 

後來在一個網站上看到在BasicEffect中加上9~11這三行就可以了。

 

   1:  Model  model2 = this.contentManager.Load<Model>(@"加入Content的模型名稱"); 
   2:  
   3:  foreach (ModelMesh mesh in model2.Meshes)
   4:  {
   5:       //上略
   6:        foreach( BasicEffect effect in mesh.effect)
   7:       {
   8:            //中略,內容為亮光,材質等設定
   9:            effect.GraphicsDevice.BlendState = BlendState.AlphaBlend;
  10:            effect.GraphicsDevice.DepthStencilState = DepthStencilState.Default; 
  11:            effect.GraphicsDevice.SamplerStates[0] = SamplerState.PointClamp;
  12:            //下略,內容為world、View、Projection矩陣的位置、平移、旋轉等效果
  13:        } 
  14:        mesh.draw()
  15:  }