public override IPositionNormalUIndexedTriangleBuffer GetPositionNormalUIndexedTriangleBuffer(IMaterial material, PlaneD3D[] clipPlanes, Gdi.Plot.IColorProvider colorProvider) { // Transform the clip planes to our coordinate system var clipPlanesTransformed = clipPlanes.Select(plane => _transformation.Transform(plane)).ToArray(); PositionNormalUIndexedTriangleBuffer result; var key = new MaterialPlusClippingPlusColorProviderKey(material, clipPlanesTransformed, colorProvider); if (!_positionNormalUIndexedTriangleBuffers.TryGetValue(key, out result)) { result = new PositionNormalUIndexedTriangleBuffer(this); _positionNormalUIndexedTriangleBuffers.Add(key, result); } return result; }
private PositionNormalColorIndexedTriangleBuffer InternalGetPositionNormalColorIndexedTriangleBuffer(IMaterial material, PlaneD3D[] clipPlanes) { // Transform the clip planes to our coordinate system var clipPlanesTransformed = clipPlanes.Select(plane => _transformation.Transform(plane)).ToArray(); PositionNormalColorIndexedTriangleBuffer result; var key = new MaterialPlusClippingKey(material, clipPlanesTransformed); if (!_positionNormalColorIndexedTriangleBuffers.TryGetValue(key, out result)) { result = new PositionNormalColorIndexedTriangleBufferWithClipping(this, clipPlanesTransformed); _positionNormalColorIndexedTriangleBuffers.Add(key, result); } return result; }