私はDrawUserIndexedPrimitivesを使って線からなるモデルを描画してXNAで3D WP7ゲームを作ろうとしています これはすべてうまくいきましたが、今はすべてのモデルに独自の回転を与えたいと思います。 現在、BasicEffectを使用してすべてのモデルを描画しています。私はその回転を設定することができますが、すべてのオブジェクトは同じ回転を持ちます。オブジェクトごとに異なる回転を設定する方法はありますか? 私は現在、私が使用できるソリューションのカップルを作ってみたが、私はそれらのいずれかに満足していないよ:XNA for WP7のゲーム:DrawUserIndexedPrimitives
- 以上のループ、その後、独自の世界で、すべてのオブジェクトのための新しいBasicEffectを作成します。すべてのオブジェクトが基本的な効果を引き出し、描画します。これらのBasicEffectがすべてオーバーヘッドを生み出すと思います。モデルから効果を分離したいと思います。
- 自分でポイントを計算します(つまり、回転を計算して、それらの値をDrawUserIndexedPrimitivesメソッドに渡します)。これはかなり高価な計算で、パフォーマンスを大幅に低下させます。
ここにはどのような推奨ルートがありますか?
DrawUserIndexedPrimitivesを使用するのが最適な方法であるかどうかわかりません。私は、線を描き、それらに回転を与えたいだけです。これを行うには良い方法がある場合、私に教えてください:)
私の現在のソリューション:
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.Black);
foreach (var model in _models)
{
foreach (var pass in model.Effect.CurrentTechnique.Passes)
{
pass.Apply();
model.Effect.World = _model.GetWorld();
var points = model.GetPoints();
GraphicsDevice.DrawUserIndexedPrimitives(PrimitiveType.LineList, points, 0, points.Length, model.Lines, 0, model.Lines.Length/2);
_models[0].Draw(GraphicsDevice);
}
}
base.Draw(gameTime);
}
model.GetWorld()オブジェクトの回転、平行移動、スケール、モデルとの行列を返します。 GetPoints()ポイントとmodel.Linesのリストは、接続されたポイントのインデックスを持つリストです