1、
/// <summary>
/// Generates a new index buffer for the specified number of vertices (or reuses an existing one).
/// </summary>
int[] GenerateCachedIndexBuffer (int vertexCount, int indexCount)
{
for (int i = 0, imax = mCache.Count; i < imax; ++i)
{
int[] ids = mCache[i];
if (ids != null && ids.Length == indexCount)
return ids;
}
int[] rv = new int[indexCount];
int index = 0;
for (int i = 0; i < vertexCount; i += 4)
{
rv[index++] = i;
rv[index++] = i + 1;
rv[index++] = i + 2;
rv[index++] = i + 2;
rv[index++] = i + 3;
rv[index++] = i;
}
if (mCache.Count > maxIndexBufferCache) mCache.RemoveAt(0);
mCache.Add(rv);
return rv;
}