私はカタンの開拓者たちに触発されたゲームを作っています。(www.facebook.com/Expanze)同じモデルの何百ものインスタンスをレンダリングするコードを最適化しています。
foreach (ModelMesh mesh in model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.Alpha = 1.0f;
effect.LightingEnabled = true;
effect.DirectionalLight0.Direction = GameState.LightDirection;
effect.DirectionalLight0.DiffuseColor = GameState.LightDiffusionColor;
effect.DirectionalLight0.SpecularColor = GameState.LightSpecularColor;
effect.DirectionalLight0.Enabled = true;
effect.View = GameState.view;
effect.Projection = GameState.projection;
for (int loop1 = 0; loop1 < validItems; loop1++)
{
if (instance[loop1].Visible)
{
instance[loop1].UpdateEffect(effect, meshNumber);
effect.World = transforms[mesh.ParentBone.Index] * instance[loop1].World;
mesh.Draw();
if(loop1 > 4)
break;
}
}
}
meshNumber++;
}
の :
instance[loop1].UpdateEffect(effect, meshNumber);
周囲の色を変更します:effect.AmbientLightColor = playerAmbientLightColor;
私の問題は、色を変更すると、すでに描画されているはずの以前のインスタンスの色に影響することです。
2つの画像、1つはif(loop1> 4)ブレークあり、2つ目はこれらの2行なし:http: //i.imgur.com/DxSKA.jpg