// Apply the necessary matrices to the vertices in the buffer private void Prepare(List <Vector> vertexBuffer, Matrix modelMatrix) { vb.Clear(); vb.AddRange(vertexBuffer); for (int i = 0; i < vb.Count; i++) { var temp = new Matrix(vb[i]); temp = modelMatrix * temp; temp = viewMatrix * temp; temp = Matrix.CreateWeakPerspective(d, temp.e[2, 0]) * temp; temp.Inverse(); vb[i] = temp.ToVector(); } // Viewport Transformation TransformVertices(viewPort, vb); }