public void GetVertices(IntPtr faceHandle, List <Vector3> vertices) { IntPtr verticesHandle = IntPtr.Zero; int verticesNum = 0; ExternApi.ArAugmentedFace_getMeshVertices(m_NativeSession.SessionHandle, faceHandle, ref verticesHandle, ref verticesNum); int floatNum = verticesNum * 3; if (m_TempVertices == null || m_TempVertices.Length != floatNum) { m_TempVertices = new float[floatNum]; } Marshal.Copy(verticesHandle, m_TempVertices, 0, floatNum); vertices.Clear(); vertices.Capacity = verticesNum; for (int i = 0; i < floatNum; i += 3) { vertices.Add(new Vector3(m_TempVertices[i], m_TempVertices[i + 1], -m_TempVertices[i + 2])); } }