コード例 #1
0
        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]));
            }
        }