private List<RecognizedPrimitiveInfo> GetLastIndexIdList(RenderEventArgs arg, uint lastVertexId)
{
PrimitiveRecognizer recognizer = PrimitiveRecognizerFactory.Create(
(arg.PickingGeometryType == PickingGeometryType.Point
&& this.indexBuffer.Mode.ToGeometryType() == PickingGeometryType.Line) ?
DrawMode.Points : this.indexBuffer.Mode);
PrimitiveRestartState glState = GetPrimitiveRestartState();
var buffer = this.indexBuffer as OneIndexBuffer;
IntPtr pointer = buffer.MapBuffer(MapBufferAccess.ReadOnly);
List<RecognizedPrimitiveInfo> primitiveInfoList = null;
if (glState == null)
{ primitiveInfoList = recognizer.Recognize(lastVertexId, pointer, this.indexBuffer as OneIndexBuffer); }
else
{ primitiveInfoList = recognizer.Recognize(lastVertexId, pointer, this.indexBuffer as OneIndexBuffer, glState.RestartIndex); }
buffer.UnmapBuffer();
return primitiveInfoList;
}