public void SetHighlightIndexes(DrawMode mode, params uint[] indexes)
{
int indexesLength = indexes.Length;
if (indexesLength > this.maxElementCount)
{
IndexBuffer original = this.indexBuffer;
this.indexBuffer = Buffer.Create(IndexBufferElementType.UInt, indexesLength, mode, BufferUsage.StaticDraw);
this.maxElementCount = indexesLength;
original.Dispose();
}
var indexBuffer = this.indexBuffer as OneIndexBuffer;
IntPtr pointer = indexBuffer.MapBuffer(MapBufferAccess.WriteOnly);
unsafe
{
var array = (uint*)pointer.ToPointer();
for (int i = 0; i < indexesLength; i++)
{
array[i] = indexes[i];
}
}
indexBuffer.UnmapBuffer();
indexBuffer.Mode = mode;
indexBuffer.ElementCount = indexesLength;
}