方法一:
在渲染模型的時候,設置一下這個參數就可以了:
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;
//===========================================================================================