我想通過繪製由線組成的模型來製作3D WP7遊戲,使用DrawUserIndexedPrimitives 這一切都工作正常,但現在我想給每個模型自己的旋轉。 目前我正在使用BasicEffect繪製所有模型。我可以設置它的旋轉,但是所有的對象都會有相同的旋轉。有沒有辦法爲每個對象設置不同的旋轉角度? 我目前已經拿出了一對夫婦,我可以使用的解決方案,但我不開心與其中一方:XNA for WP7遊戲:DrawUserIndexedPrimitives
- 爲每個對象創建一個新的BasicEffect,有自己的世界,然後遍歷所有這些對象都可以獲得它們的基本效果並繪製它 - 我想所有這些BasicEffects都會產生很多開銷,並且我想將效果與模型分開。
- 自己計算點數(即計算旋轉並將這些值傳遞給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的列表是一個包含連接點索引的列表