예제 #1
0
            public T Get(int primitiveCount)
            {
                int index = MathUtils.HighestBitIndex(MathUtils.NextPowerOf2(primitiveCount));
                SizedMeshBuffer <T> buffer = buffers[index];

                if (buffer == null)
                {
                    // if we happen to need buffers with higher counts of primitives, make a new one
                    InitBufferPair(index, 1);
                    buffer = buffers[index];
                }
                return(buffer.GetNextFree());
            }
예제 #2
0
            public void InitBufferPair(int index, int initialCapacity)
            {
                int powerOfTwo = 1 << index;

                if (buffers[index] != null)
                {
                    buffers[index].EnsureCapacity(initialCapacity);
                }
                else
                {
                    buffers[index] = new SizedMeshBuffer <T>(powerOfTwo, initialCapacity);
                }
                // make sure instances exist for all lower indices as well
                for (int i = index - 1; i >= 0; --i)
                {
                    if (buffers[i] == null)
                    {
                        powerOfTwo = 1 << i;
                        buffers[i] = new SizedMeshBuffer <T>(powerOfTwo, 1);
                    }
                }
                numBuffers = index + 1;
            }