当前顶点声明不包括当前顶点着色器所需的所有元素。 TextureCoordinate0缺失。 C#

时间:2013-08-18 04:00:47

标签: 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.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是我正常加载的Texture2D,它基本上是一个用Paint制作的灰色方块。

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

更重要的是,我觉得错误是由这两个产生的:

    effect.TextureEnabled = true;
    effect.Texture = guntexture;

删除第一个导致游戏编译,但没有纹理。保持它并将其设置为false也是如此。我也尝试重新排序,但这不起作用,同样的事情。

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

此外,我可以使用默认照明点亮枪而没有错误。

1 个答案:

答案 0 :(得分:2)

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

如果您没有紫外线坐标,请检查this搅拌机纹理教程。

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