public void Normal_Render(Vector3 vertexScale)
        {
            for (int z = 0; z < mNumPatchesPerSize; ++z)
            {
                for (int x = 0; x < mNumPatchesPerSize; ++x)
                {
                    CGeommPatch patch = GetPatch(x, z);
                    if (null == patch)
                    {
                        continue;
                    }

                    Profiler.BeginSample("NormalRender.Reset");
                    patch.Reset();
                    Profiler.EndSample();

                    Profiler.BeginSample("NormalRender.Render");
                    patch.Render(mHeightData, vertexScale);
                    Profiler.EndSample();

                    Profiler.BeginSample("NormalRender.Present");
                    patch.Present();
                    Profiler.EndSample();
                }
            }
        }
        public void CLOD_Render(Vector3 vectorScale)
        {
            for (int z = 0; z < mNumPatchesPerSize; ++z)
            {
                for (int x = 0; x < mNumPatchesPerSize; ++x)
                {
                    CGeommPatch patch = GetPatch(x, z);
                    if (null == patch)
                    {
                        continue;
                    }

                    int         curPatchLOD         = patch.mLOD;
                    CGeommPatch leftNeighborPatch   = GetPatch(x - 1, z);
                    CGeommPatch topNeighborPatch    = GetPatch(x, z + 1);
                    CGeommPatch rightNeighborPatch  = GetPatch(x + 1, z);
                    CGeommPatch bottomNeighborPatch = GetPatch(x, z - 1);

                    //需要画左边中间的点
                    patch.mbDrawLeftBorderMid   = CanDrawMidVertex(curPatchLOD, leftNeighborPatch);
                    patch.mbDrawTopBorderMid    = CanDrawMidVertex(curPatchLOD, topNeighborPatch);
                    patch.mbDrawRightBorderMid  = CanDrawMidVertex(curPatchLOD, rightNeighborPatch);
                    patch.mbDrawBottomBorderMid = CanDrawMidVertex(curPatchLOD, bottomNeighborPatch);

                    Profiler.BeginSample("Geomipmapping.Reset");
                    patch.Reset();
                    Profiler.EndSample();

                    if (patch.mbIsVisible)
                    {
                        Profiler.BeginSample("Geomipmapping.RenderPatch");
                        RenderPatch(patch, vectorScale);
                        Profiler.EndSample();
                    }

                    Profiler.BeginSample("Geomipmapping.Present");
                    patch.Present();
                    Profiler.EndSample();
                }
            }
        }