1

我第一次尝试在 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 制作的灰色方块。

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

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

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

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

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

此外,我可以使用默认照明毫无错误地点亮枪。

4

1 回答 1

2

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

如果您没有 uv 坐标,请查看搅拌机纹理教程。

教程展示了如何在 xna 中使用带有纹理的基本效果

于 2013-08-18T22:46:10.920 回答