/// <summary> /// configures a transformed matrix to the vertex component data /// using the sprite object. /// </summary> /// <param name="vertexData">target vertex component data</param> /// <param name="obj">source sprite object</param> /// <param name="startIndex">start index of the vertex component data</param> /// <param name="transformMatrix">transformed matrix</param> /// <param name="space">3D render space</param> private static void SetBufferPosition( ref VertexPositionColorTexture[] vertexData, Sprite3DObject obj, int startIndex, Matrix transformMatrix, RenderingSpace space) { float cx = obj.Width * 0.5f; float cy = obj.Height * 0.5f; vertexData[startIndex + 0].Position = new Vector3(-cx, +cy, 0.0f); vertexData[startIndex + 1].Position = new Vector3(+cx, +cy, 0.0f); vertexData[startIndex + 2].Position = new Vector3(-cx, -cy, 0.0f); vertexData[startIndex + 3].Position = new Vector3(+cx, -cy, 0.0f); for (int i = 0; i < 4; i++) { int arrayIndex = startIndex + i; Vector3.TransformNormal(ref vertexData[arrayIndex].Position, ref transformMatrix, out vertexData[arrayIndex].Position); vertexData[arrayIndex].Position += obj.Center; if (space == RenderingSpace.Screen) { vertexData[arrayIndex].Position = HelperMath.Make2DCoord(vertexData[arrayIndex].Position); } } }