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(); } } }