C# 单对策多顶点纹理

C# 单对策多顶点纹理,c#,xna,monogame,C#,Xna,Monogame,我正在尝试将2D游戏转换为3D,但在纹理方面遇到了一些问题。整个游戏都是由立方体组成的,所以我使用顶点创建一个立方体,并通过draw方法调用它。然而,我似乎只能用一种基本效果给所有立方体上色。我想我需要使用一些其他类型的效果,这样我可以为每个立方体选择纹理,但不确定该做什么。谢谢你的帮助 将使用如下循环在屏幕上绘制立方体。不知何故,每个立方体都需要不同的纹理 foreach (EffectPass pass in basicEffect.CurrentTechnique.Passes) {

我正在尝试将2D游戏转换为3D,但在纹理方面遇到了一些问题。整个游戏都是由立方体组成的,所以我使用顶点创建一个立方体,并通过draw方法调用它。然而,我似乎只能用一种基本效果给所有立方体上色。我想我需要使用一些其他类型的效果,这样我可以为每个立方体选择纹理,但不确定该做什么。谢谢你的帮助

将使用如下循环在屏幕上绘制立方体。不知何故,每个立方体都需要不同的纹理

foreach (EffectPass pass in basicEffect.CurrentTechnique.Passes)
{
  pass.Apply();

  for (int i=0;i<mapsize;i++)
  {
      vertices = createCubeTexture(-1.0f, 0.5f);
      device.DrawUserPrimitives(PrimitiveType.TriangleList, vertices, 0, 2, VertexPositionTexture.VertexDeclaration);
  }
}
foreach(在basicEffect.currentTechnical.passs中传递EffectPass)
{
pass.Apply();

对于(int i=0;i请看您的问题:

for (int i=0;i<mapsize;i++)
  {
      vertices = createCubeTexture(-1.0f, 0.5f);
      device.DrawUserPrimitives(PrimitiveType.TriangleList, vertices, 0, 2, VertexPositionTexture.VertexDeclaration);
  }
请注意,我已经有一段时间没有手动绘制多维数据集了,因此我不记得这是否是正确的方法,但如果不是,则非常相似。只需循环遍历每个多维数据集,并调用Draw方法


然后,在实例化立方体时,根据创建的立方体传递不同的纹理:)

我们需要代码来更深入地评估问题。现在,听起来你只是在绘制列表中存储的立方体数量。如果你不为绘制的每个立方体加载单独的纹理,这显然会是一个问题。但是显示一些代码。添加了上面的代码,希望有帮助,这是有意义的,所以我需要一个不同的ef对每个纹理都有效果,并且会对每个立方体分别进行反复效果传递吗?我认为有一种方法可以只使用一种效果,但使用多个纹理。在立方体外部实例化效果,并将其作为引用传递。这应该可以用:)
public class Cube
{
    public Vector3 Position { get; set; }
    public Texture2D Texture { get; set; }

    public Cube(Vector3 position, Texture2D texture)
    {
        Position = position;
        Texture = texture;
    }

    public void Draw(GraphicsDevice device)
    {
        var vertices = createCubeTexture(position);
        device.DrawUserPrimitives(PrimitiveType.TriangleList, vertices, 0, 2, VertexPositionTexture.VertexDeclaration);
    }
}