3d 混合器到Xna 4.0 windows 7.0 Alpha混合问题

3d 混合器到Xna 4.0 windows 7.0 Alpha混合问题,3d,xna,textures,blender,alphablending,3d,Xna,Textures,Blender,Alphablending,我在从blender加载带有alpha混合的纹理模型到xna时遇到问题 在blender上,我知道纹理具有正确的alpha值,但每当我在游戏中绘制模型时,原本应该是透明的额外空间反而被填充为黑色 这就是我的绘图方法 public void draw() { Matrix posTranslated = Matrix.CreateTranslation(position); foreach (ModelMesh mesh in model.Meshes)

我在从blender加载带有alpha混合的纹理模型到xna时遇到问题

在blender上,我知道纹理具有正确的alpha值,但每当我在游戏中绘制模型时,原本应该是透明的额外空间反而被填充为黑色

这就是我的绘图方法

public void draw()
    {

        Matrix posTranslated = Matrix.CreateTranslation(position); 
        foreach (ModelMesh mesh in model.Meshes)
        {
            foreach (BasicEffect effect in mesh.Effects)
            {
                effect.EnableDefaultLighting();


                effect.View = view;
                effect.Projection = proj;
                effect.World = modelTransforms[mesh.ParentBone.Index] * posTranslated;
            }

            mesh.Draw();

        }
    }

我是否缺少对图形设备的任何效果或更改?我已经搜索了好几天了,在这个问题上仍然没有什么运气。请帮助T.T

您是否设置了这些属性

graphicsDevice.RenderState.AlphaBlendEnable = true;
graphicsDevice.RenderState.SourceBlend = Blend.SourceAlpha;
graphicsDevice.RenderState.DestinationBlend = Blend.InverseSourceAlpha;
如果使用的是XNA 4.0,则需要设置混合状态,而不是旧的RenderState

BlendState blendState = new BlendState()
{
    AlphaSourceBlend = Blend.SourceAlpha,
    AlphaDestinationBlend = Blend.InverseSourceAlpha, 
    ColorDestinationBlend = Blend.InverseSourceAlpha, // Required for Reach profile
};
GraphicsDevice.BlendState = blendState;

它们会进入嵌套for循环吗?我也“我使用的是xna 4.0,我只是查看了一下,在graphicsDevice中没有看到渲染状态,你是说BlendState吗?你需要在调用draw方法之前设置它们,它们是一组开关,可以为渲染的每个对象设置或更改,如果您从未更改它们,那么在创建图形设备后只更改一次是安全的。您看到“编辑到我的提交”了吗?我在graphicsDevice中没有看到RenderState字段。您正在使用xna 4.0吗?感谢您的帮助,但现在我得到一个NotSupportedException xna Framework Reach配置文件不支持单独的alpha混合。BlendState.ColorDestinationBlend和AlphaDestinationBlend必须设置为相同的值。我尝试在blendstate声明中添加ColorSourceBlend=Blend.SourceAlpha,但它没有改变任何内容添加ColorDestinationBlend=Blend.InverseSourceAlpha行,在AlphaDestinationBlend属性尺度之后您确定纹理导出时alpha保持不变吗?如果你在Paint.NET之类的地方查看他们,你会通过alpha区域看到网纹背景吗?是的,在gimp和blender中,它会显示正确的alpha区域谢谢你的建议^