Xnaでクラス " DrawUserIndexPrimitive " を使用してテクスチャを描画する際に問題が発生しています。
立方体/モデルを問題なく描画できます。しかし、立方体にさまざまなテクスチャを描きたいと思っています。異なるキューブに適用された異なるテクスチャの各「ID」をループします。しかし、うまくいきません。クラス「GraphicData」とは異なる IndexBuffer を使用して、毎回 buffer と vertexPosition を適用します。
適用される最終的なテクスチャは、すべてのキューブで同じです
ありがとうございました
関数「Draw」のコードは次のとおりです
public void drawWorld(GameTime gameTime)
{
if (needToDraw)
{
int index = 0;
foreach (GraphicData data in graphicData)
{
effet.LightingEnabled = false;
effet.VertexColorEnabled = false;
effet.TextureEnabled = true;
effet.FogEnabled = false;
effet.FogStart = arcadia.camera.NearPlane;
effet.FogEnd = arcadia.camera.FarPlane;
effet.FogColor = new Vector3(1, 1, 1);
effet.View = arcadia.camera.View;
effet.Projection = arcadia.camera.Projection;
effet.Texture = data.Texture2D;
//I hardcoded with a condition for check that the texture changes well in my loop
/*
if (index == 0)
{
effet.Texture = Game.Content.Load<Texture2D>("Models\\Ground\\Land\\ground_land_text1");
}
else
{
effet.Texture = Game.Content.Load<Texture2D>("Models\\Ground\\Land\\ground_land_text2");
}
*/
foreach (EffectPass pass in effet.CurrentTechnique.Passes)
{
pass.Apply();
//Initialize et envoie à la carte graphique le buffer et les vertices
if (data.vertexBuffer != null && data.indexBuffer != null)
{
Game.GraphicsDevice.SetVertexBuffer(data.vertexBuffer);
Game.GraphicsDevice.Indices = data.indexBuffer;
Game.GraphicsDevice.DrawUserIndexedPrimitives(PrimitiveType.TriangleList, data.vertexPosition, 0, data.vertexPosition.Length, data.indices, 0, data.indices.Length / 3);
}
}
index++;
}
}
}