当前顶点声明不包括当前顶点着色器所需的所有元素。缺少纹理坐标0。C#

当前顶点声明不包括当前顶点着色器所需的所有元素。缺少纹理坐标0。C#,c#,3d,xna-4.0,C#,3d,Xna 4.0,我第一次尝试在XNA制作3D游戏,我已经有了2D和C#编码的经验,但这让我有点扫兴 我正在尝试在3D对象(我正在Blender中处理的未完成枪模型)上绘制纹理,该模型加载,但完全为白色(预期),现在我想使用以下方法在枪上绘制灰色: private void DrawModel(Model model, Matrix world, Matrix view, Matrix projection) { foreach (ModelMesh mesh in model.M

我第一次尝试在XNA制作3D游戏,我已经有了2D和C#编码的经验,但这让我有点扫兴

我正在尝试在3D对象(我正在Blender中处理的未完成枪模型)上绘制纹理,该模型加载,但完全为白色(预期),现在我想使用以下方法在枪上绘制灰色:

    private void DrawModel(Model model, Matrix world, Matrix view, Matrix projection)
    {
        foreach (ModelMesh mesh in model.Meshes)
        {
            foreach (BasicEffect effect in mesh.Effects)
            {
                effect.EnableDefaultLighting();
                effect.TextureEnabled = true;
                effect.Texture = guntexture;
                effect.World = world;
                effect.View = view;
                effect.Projection = projection;          

            }

            mesh.Draw();
        }




    }
guntexture是我以正常方式加载的纹理2D,基本上是一个用油漆制作的灰色正方形

现在的问题是,当我编译时,我得到了这个错误:“当前顶点声明不包括当前顶点着色器所需的所有元素。缺少TextureCoordination 0。”

更重要的是,我觉得错误是由以下两个因素造成的:

    effect.TextureEnabled = true;
    effect.Texture = guntexture;
移除第一个会导致游戏编译,但没有纹理。将其保留并设置为false也会执行相同的操作。我也试着重新排序,但同样的事情也没有成功

请帮我了解发生了什么,是不是纹理有问题?还是枪


此外,我可以使用默认照明来照明枪,不会出现错误。

您缺少纹理uv坐标。必须使用网格导出它们。如果它们不存在,您可以在blender中创建它们

如果没有uv坐标,请检查“混合器纹理教程”


这显示了如何在xna中使用纹理的基本效果

I UV映射它,现在问题解决了,谢谢!