public float[] GetAreaTess(TessTool tess, Tesselate.Tesselator.WindingRuleType windingRuleType, TessTriangleTechnique tessTechnique) { #if DEBUG if (this.TessTriangleTech == 0) { } #endif if (TessTriangleTech != tessTechnique) { //re tess again this.TessTriangleTech = tessTechnique; //*** using (Borrow(out ReusableCoordList resuableCoordList)) { List <float> coordXYs = resuableCoordList._coordXYs; List <int> contourEndPoints = resuableCoordList._contourEndPoints; for (int i = 0; i < _figures.Length; ++i) { Figure figure = _figures[i]; coordXYs.AddRange(figure.coordXYs); contourEndPoints.Add(coordXYs.Count - 1); } if (this.TessTriangleTech == TessTriangleTechnique.DrawArray) { tess.WindingRuleType = windingRuleType; return(_areaTess = tess.TessAsTriVertexArray( coordXYs.ToArray(), contourEndPoints.ToArray(), out _tessAreaVertexCount)); } else { tess.WindingRuleType = windingRuleType; _areaTessIndexList = tess.TessAsTriIndexArray( coordXYs.ToArray(), contourEndPoints.ToArray(), out _areaTess, out _tessAreaVertexCount); return(_areaTess); } } } else { //if equal return(_areaTess); } }
internal void CreateAreaTessVBOSegment(VBOStream ownerVBOStream, TessTool tess, Tesselate.Tesselator.WindingRuleType windingRuleType) { // float[] tessArea = GetAreaTess(tess, windingRuleType); if (tessArea != null) { _tessAreaVboSeg = ownerVBOStream.CreateSegment(tessArea, TessAreaVertexCount, 2); } else { //?? } // }
public float[] GetAreaTess(TessTool tess, Tesselate.Tesselator.WindingRuleType windingRuleType, TessTriangleTechnique tech) { #if DEBUG if (this.TessTriangleTech == 0) { } #endif if (TessTriangleTech != tech) { //re tess again this.TessTriangleTech = tech; //*** if (this.TessTriangleTech == TessTriangleTechnique.DrawArray) { tess.WindingRuleType = windingRuleType; return(_areaTess ?? (_areaTess = tess.TessAsTriVertexArray(coordXYs, null, out _tessAreaVertexCount))); } else { tess.WindingRuleType = windingRuleType; _indexListArray = tess.TessAsTriIndexArray(coordXYs, null, out _areaTess, out _tessAreaVertexCount); return(_areaTess); } } else { //if equal return(_areaTess); } }
internal float[] GetAreaTess(TessTool tess, Tesselate.Tesselator.WindingRuleType windingRuleType) { return((_figure != null) ? _figure.GetAreaTess(tess, windingRuleType, TessTriangleTechnique.DrawArray) : _figures.GetAreaTess(tess, windingRuleType, TessTriangleTechnique.DrawArray)); }