Visual Studio 中的模型透明度深度问题
Model transparency depth issue in Visual Studio
大家好,我环顾四周,找不到适合像我这样的初学者 C# 程序员的任何可以理解的解决方案。
我在 Visual Studio C# 上为我的项目创建了一个模型(树),该树使用平面作为叶子,并且我在 Blender 上使用具有透明背景的叶子图像对平面进行了纹理处理。我已经使材质透明并且纹理接受 alpha,但是当我将其导入我的游戏时,树叶是可见的,但透明度会穿过树枝并显示除了它后面的树枝之外的所有内容。
这是我的基本绘制方法,有人可以给我一个调用 alpha 混合的方法,或者我需要什么才能使透明度正常工作吗?我真的不想读一整本关于透明度深度的书..
foreach (ModelMesh mesh in model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.FogEnabled = true;
effect.FogStart = 70;
effect.FogEnd = 100;
effect.EnableDefaultLighting();
effect.World = camera.world;
effect.View = view;
effect.Projection = projection;
}
mesh.Draw();
由于您的叶子没有任何半透明区域,您可以通过 alpha 测试解决此问题。为此,您必须使用 AlphaTestEffect
来渲染您的树(或在像素着色器中实施 alpha 测试)。在 XNA 的早期版本中,有 alpha 测试渲染状态。但是这些在4.0版本中已经被移除了
大家好,我环顾四周,找不到适合像我这样的初学者 C# 程序员的任何可以理解的解决方案。
我在 Visual Studio C# 上为我的项目创建了一个模型(树),该树使用平面作为叶子,并且我在 Blender 上使用具有透明背景的叶子图像对平面进行了纹理处理。我已经使材质透明并且纹理接受 alpha,但是当我将其导入我的游戏时,树叶是可见的,但透明度会穿过树枝并显示除了它后面的树枝之外的所有内容。
这是我的基本绘制方法,有人可以给我一个调用 alpha 混合的方法,或者我需要什么才能使透明度正常工作吗?我真的不想读一整本关于透明度深度的书..
foreach (ModelMesh mesh in model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.FogEnabled = true;
effect.FogStart = 70;
effect.FogEnd = 100;
effect.EnableDefaultLighting();
effect.World = camera.world;
effect.View = view;
effect.Projection = projection;
}
mesh.Draw();
由于您的叶子没有任何半透明区域,您可以通过 alpha 测试解决此问题。为此,您必须使用 AlphaTestEffect
来渲染您的树(或在像素着色器中实施 alpha 测试)。在 XNA 的早期版本中,有 alpha 测试渲染状态。但是这些在4.0版本中已经被移除了