[XNA+Silverlight應用程式 in WP7]若3D模型貼圖帶有Alpha值,則SpriteBatch會變透明解決方法
今天遇到一個問題,就是模型的貼圖如果帶有Alpha值得話,在經過SpriteBatch作用完後,
會變成部分透明的狀態,如下圖左邊。
- 左方是在模擬器中只剩下鋼盔跟鞋子的小矮兵….右邊是原本的模型
後來在一個網站上看到在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: }