If I do
lightEffect.Parameters["lightPosition"].Elements[0].SetValue(new Vector3(0, 0, 3)); lightEffect.Parameters["lightPosition"].Elements[1].SetValue(new Vector3(4, 4, 3)); lightEffect.Parameters["lightPosition"].Elements[2].SetValue(new Vector3(8+cameraOrigin.X, 8, 3));
the values of my array in my shader never change values (taking values set on first frame), whereas
lightEffect.Parameters["lightPosition"].SetValue(new[]{ new Vector3(0, 0, 3),new Vector3(4, 4, 3), new Vector3(8 + cameraOrigin.X, 8, 3)});
works fine. This is presumably because the StateKey is not being changed using the first method. Is this expected behaviour? It seems counterintuitive to me.