private void AssembleIndexBuffer(
RecognizedPrimitiveInfo recognizedPrimitiveIndex0,
RecognizedPrimitiveInfo recognizedPrimitiveIndex1,
DrawMode drawMode,
out OneIndexBuffer oneIndexBuffer,
out uint lastIndex0, out uint lastIndex1)
{
List<uint> indexArray = ArrangeIndexes(
recognizedPrimitiveIndex0, recognizedPrimitiveIndex1, drawMode,
out lastIndex0, out lastIndex1);
if (indexArray.Count !=
recognizedPrimitiveIndex0.VertexIds.Length
+ 1
+ recognizedPrimitiveIndex1.VertexIds.Length)
{ throw new Exception(string.Format("index array[{0}] not same length with [recognized primitive1 index length{1}] + [1] + recognized primitive2 index length[{2}]", recognizedPrimitiveIndex0.VertexIds.Length, recognizedPrimitiveIndex1.VertexIds.Length)); }
oneIndexBuffer = indexArray.ToArray().GenIndexBuffer(drawMode, BufferUsage.StaticDraw);
//oneIndexBuffer = Buffer.Create(IndexElementType.UInt,
// recognizedPrimitiveIndex0.VertexIds.Length
// + 1
// + recognizedPrimitiveIndex1.VertexIds.Length,
// drawMode, BufferUsage.StaticDraw);
//unsafe
//{
// var array = (uint*)oneIndexBuffer.MapBuffer(MapBufferAccess.WriteOnly);
// for (int i = 0; i < indexArray.Count; i++)
// {
// array[i] = indexArray[i];
// }
// oneIndexBuffer.UnmapBuffer();
//}
}