いくつかのオプションがあります。それは、モデルが実行時に読み込まれるか生成されるか、および複数のテクスチャが 1 つに結合されるか個別に保持されるかという 2 つの点に依存します。
アート スキルを持っているか、アーティストを知っている場合、おそらく最も簡単な方法は、必要な数のテクスチャ (複数のマテリアル) を使用して円柱にテクスチャ マッピングするよう依頼することです。必要なテクスチャごとに 1Model
つのメッシュ ( ModelMesh
) と 1 つのマテリアル ( ) が必要です。ModelMeshPart
これは、円柱が常に固定数のテクスチャを持っていることを前提としています!. 次に、実行時にテクスチャを交換するには、ModelMesh.Effects
コレクションを反復処理し、それぞれを にキャストして、そのプロパティBasicEffect
を設定しTexture
ます。
モデルを変更できない場合は、モデルを生成する必要があります。AppHub サイトにこの例があります: http://create.msdn.com/en-US/education/catalog/sample/primitives_3d。おそらくテクスチャ座標を生成しないため、追加する必要があります。円柱ごとに 5 つの画像が必要な場合は、セグメントの数が 5 の倍数であることを確認し、V 座標が円柱を 1 周するときに 0 から 1 まで 5 回移動する必要があります。この手法でテクスチャを個別に維持するには、円柱を 5 つのチャンクで描画し、そのたびGraphicsDevice.Textures[0]
に を現在のテクスチャに設定する必要があります。
どちらの手法でも、1 回の描画呼び出しで円柱を描画できますが、 と を使用してテクスチャを 1 つにマージする必要がありTexture2D.GetData
ますTexture2D.SetData
。これはより効率的になりますが、実際には手間をかける価値はありません。とにかく、ある種のクレイジーなスロット マシン パーティクル システムを作成しない限り、そうではありません。