方法一:

在渲染模型的時候,設置一下這個參數就可以了:

BasicEffect.Alpha = XXX;


這裡的Alpha是透明度,取值在0-1之間,0是完全透明,1是完全不透明,


foreach (ModelMesh mesh in _model.Meshes)
            {
                foreach (BasicEffect effect in mesh.Effects)
                {
                    if (this.EnableColor)
                    {
                        effect.DiffuseColor = this.Color.ToVector3();
                        effect.Alpha = (float)(this.Color.A) / 255f;
                    }


                    effect.World = this.InnerTransform * this.Transform;
                    effect.View = view;
                    effect.Projection = projection;


                    if (this.EnableLighting)
                    {
                        effect.EnableDefaultLighting();
                    }
                }


                mesh.Draw();
            }

//===========================================================================================

方法二:

在遊戲中 很多時後都有用到讓模型透明

 

像是  第三人稱遊戲 在主角與攝影機之間的物件

 

就會變成半透明

 

或者是動作遊戲 被怪物攻擊時 人物會呈現暫時的無敵狀態

 

那時也會變成半透明 與不透明快速的閃爍

 

其實要讓MODEL透明

 

只要在PixelShader做一點手腳皆可

例如

float4 PixelShader(PS_INPUT input) : COLOR0
{
    float4 color = tex2D(Sampler, input.TexCoord);
    return color;
}

這行的意思 是 最後 會傳出一個color

 

color 是一個有rgba的四個float的暫存器

只要讓

color.a =0.5f;

如果數值大於1 那就永遠都不透明

數值等於0 那就是完全透明 等於看不到

 

所以只要控制這個值   就可以做到你想要的效果了

//===========================================================================================

方法三:

在Draw()方法前加入:
graphics.GraphicsDevice.RenderState.DepthBufferEnable = true;


//===========================================================================================

arrow
arrow
    全站熱搜

    createps 發表在 痞客邦 留言(0) 人氣()